#html #css
#HTML #css
Вопрос:
У меня есть следующий css.
#lll
{
float:left;
max-width:1000px;
border:1px solid;
}
#rrr
{
float:left;
width:300px;
border:1px solid;
}
ul
{
list-style:none;
}
li
{
float:left;
width:300px;
}
И мой HTML выглядит следующим образом
<div id="lll">
Hello
<ul>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
</div>
<div id="rrr">
right!
</div>
JSFiddle здесь http://jsfiddle.net/SN674/1 /
Теперь, что я хотел бы сделать, так это то, что при изменении размера окна я хотел бы, чтобы div # lll был изменен, но div # rrr оставался с правой стороны.
Прямо сейчас, если я изменю размер окна, div #rrr появится НИЖЕ div #lll.
Как я могу этого добиться?
Комментарии:
1. не получил ваш вопрос. Div #rr помещается под div #lll … поэтому, если вы измените размер, он все равно останется только ниже div #lll … и если вы хотите, чтобы он был справа при изменении размера .. измените css #rrr { float:right; ширина: 300 пикселей; граница: 1 пиксель сплошная; }
2. @suraj, из того, что я вижу, изначально div #rrr размещается с правой стороны, А НЕ под #lll. Может быть, ваш экран уже маленький?
Ответ №1:
Вот как я бы сделал это в CSS:
<style type="text/css">
#lll
{
position: relative;
margin-right: 305px;
max-width:600px;
min-width: 40px;
border:1px solid;
}
ul
{
list-style:none;
}
li
{
width:300px;
}
#rrr
{
position:absolute;
right: -302px;
top: -1px;
width:300px;
border:1px solid;
}
</style>
<div id="lll">
Hello
<ul>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
<div id="rrr">
Whatever
</div>
</div>
Вот один из способов в jQuery (как я бы это сделал):
Короткий ответ: http://jsfiddle.net/SN674/4 /
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$("div#lll").width($(document).width() - 350);
$(window).resize(function(){
$("div#lll").width($(document).width() - 350);
});
});
</script>
<div id="lll">
Hello
<ul>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
</div>
<div id="rrr">
Whatever
</div>
Подробный ответ:
Шаг 1.
Скачать jQuery
Шаг 2. Прочитайте это: http://api.jquery.com/width / http://api.jquery.com/resize/
шаг 3. Проверьте этот пример, который я сделал:
<html>
<head>
<style type="text/css">
*{
margin: 0px;
padding: 0px;
}
div {
float: left;
width: 300px;
}
#solid {
background-color: yellow;
}
#liquid{
background-color: navy;
}
</style>
<title>
test
</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$("div#liquid").width($(document).width() - 301);
$(window).resize(function(){
$("div#liquid").width($(document).width() - 301);
});
});
</script>
</head>
<body>
<div id="liquid">
amp;nbsp;
</div>
<div id="solid">
amp;nbsp;
</div>
</body>
</html>
Я надеюсь, что это решит проблему для вас
Комментарии:
1. не могли бы вы сделать это с помощью чистого css и html?
2. очень полезно! но, как говорится в комментарии, возможно ли это с помощью css?
3. Я отредактировал ответ, чтобы подробнее рассказать о том, как вы могли бы сделать это в css.
4. Также он не должен быть 350, если вы установите * margin и padding равными 0, вы можете уменьшить его до 301 (или немного больше с границами).
Ответ №2:
Я сделал его эластичным, используя проценты, хотя это может быть не то, что вы хотите. Проверьте это.
Ответ №3:
Вам просто нужно немного изменить свой CSS:
body { margin:0px;}
div {margin:0px;}
#lll{
float:left;
margin-right:300px;
border:1px solid;
}
#rrr{
position:absolute; right:0px; top:0px;
width:300px;
border:1px solid;
}
ul{ list-style:none;}
li{ float:left; width:300px; }
Хотя это не будет работать с IE6 и IE7. Для совместимости с IE6 и IE7, я думаю, нам нужны некоторые скрипты.