#html #css
#HTML #css
Вопрос:
Я новичок в css и хочу знать, как лучше создавать фреймы в css, чем фреймы html? Для обучения я хочу создать экран с 2 фреймами одинакового размера, причем первый фрейм разделен на 2 столбца. Может кто-нибудь, пожалуйста, подсказать мне, с чего мне начать?
Комментарии:
1. создайте css внутри вашего фрейма
2. фреймы по определению являются плохим выбором, потому что они разрушают присущее посетителю понимание веб-потока -> кнопка «Назад» не всегда возвращает к предыдущему просмотру. Используйте макет с
div
s и css’position
илиflow
3. Почему бы вам не погуглить
css frames
, прежде чем задавать этот вопрос?4. Что такое фреймы css? Что вы пробовали? Код был бы полезен для уточнения того, что вы пытаетесь сделать и сказать.
Ответ №1:
Вы можете имитировать фреймы с помощью div
тегов и overflow
атрибута CSS.
Демо:http://jsfiddle.net/wdm954/wPywB
HTML…
<div id="a">
<div class="col1">testing col1</div>
<div class="col2">testing col2</div>
</div>
<div id="b">
Test test test.
</div>
CSS…
#a, #b {
width: 50%;
height: 400px;
float: left;
overflow-y: scroll;
}
#a .col1, #a .col2 {
width: 50%;
float: left;
}
При желании вы можете с помощью некоторого jQuery динамически задавать высоту столбцов, похожих на фреймы…
$(document).ready(function() {
$('#a, #b').height( $(window).height() );
$(window).resize(function() {
$('#a, #b').height( $(window).height() );
});
});
Ответ №2:
Сделал для вас пример. Просто добавьте класс ‘frame’ в div
, и это будет выглядеть как фрейм. Отлично работает в IE5.5 и Safari 5 (браузерах, которые я тестировал).
Также добавлен класс ‘border’ для имитации полосы перетаскивания рамки. Но вы, вероятно, хотите что-то более стильное. 😛
CSS:
* {
margin:0;
padding:0
}
html, body {
overflow:hidden;
width:100%;
height:100%
}
body {
background:lightgrey
}
.frame {
float:left;
width:49.5%;
height:100%;
overflow:auto
}
.frame .frame {
background:cyan
}
.frame.border {
border-right:3px ridge buttonface
}
HTML:
<div class="frame">
<div class="frame border">
<p>Left column</p>
</div>
<div class="frame">
<p>Right column</p>
</div>
</div>
<div class="frame">
<p>Right frame</p>
</div>
Комментарии:
1. этот пример не работает, левый и правый столбцы сложены.
Ответ №3:
Большое спасибо, ребята!!! Вот как я сделал:
CSS
body{
margin: 0;
padding: 0;
border: 0;
overflow: hidden;
height: 100%;
max-height: 100%;
}
#framecontent{
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 320px;
overflow: auto;
}
#maincontent{
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 130px;
overflow: hidden;
background: #fff;
}
.innermargin{
margin: 15px;
}
HTML
<div id="framecontent">
<div class="innermargin">
<h4>Search Result</h4>
</div>
</div>
<div id="maincontent">
<div class="innermargin">
<h4>Search Criteria</h4>
</div>
</div>
Комментарии:
1. Если вы получили свой ответ из другого ответа, пожалуйста, не публикуйте ответ самостоятельно, а примите ответ, который помог вам больше всего.
Ответ №4:
вы можете использовать библиотеку фреймов Javascript.
не забудьте объявить кодировку как Utf-8 в разделе head:
<meta content="text/html; charset=utf-8" http-equiv="content-type">
<div id="thewin"></div>
<script src="http://pastebin.com/raw/kR6B0XCY"></script>
<script>
//you can create multiple frames to.
createnewwindow("my frame","thewin","windowid","<h5>my contents</h5><button onClick="wht()">change to white</button>");
function wht(){
setdefcol("white"); //optional semi transparent gray is default
hidefrm("windowid")
showfr("windowid");
}
</script>
Простое и понятное решение.