Расстояние между дочерними элементами
Доброго времени суток. В функции f() в качестве параметра указывается расстояние между дочерними элементами элеменета menu. По идее, складывается со space width и left [0] - элемента. Потом, их сумма подставляется в left [1] элемента и т.д. Проблема вся в том, что после вычислений внесения суммы в left [1] - элемента, она же вносится во все остальные. Что делать?
...
<style type="text/css">
.link{
position:absolute;
border:1px solid #000000;
width:100px;
}
</style>
<body>
<div id="menu"><div class="link">First</div><div class="link">Second</div><div class="link">Third</div></div>
<script type="text/javascript">
function f(space){
var i = 0;
while(document.getElementById("menu").children.length > i+1){
var w = document.getElementById("menu").children[i].style.width;
var l = document.getElementById("menu").children[i].style.left;
var wl = parseInt(w + l);
i++;
document.getElementById("menu").children[i].style.left = wl + space;
}
}
f(15);
</script> </body> |
jule,
если width известна зачем её получать способом который не даст результата ,также и с left. http://learn.javascript.ru/styles-an...-currentstyle
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<style type="text/css">
.link{
position:absolute;
border:1px solid #000000;
width:100px;
}
</style>
<div id="menu"><div class="link">First</div><div class="link">Second</div><div class="link">Third</div></div>
<script>
function f(space){
var i = 0,
len = document.getElementById("menu").children.length , w = 100;
for (var i=0; i<len; i++) {
document.getElementById("menu").children[i].style.left = (w + space)* i + "px";
}
}
f(15);
</script>
</body>
</html>
|
Почему нельзя сделать вот так?
<style>
.link{
border:1px solid #000000;
width:100px;
margin-right: 15px;
display: inline-block;
}
.last {
margin-right: 0;
}
</style>
<div id="menu">
<div class="link">First</div>
<div class="link">Second</div>
<div class="link last">Third</div>
</div>
|
рони, мне нужно каждый раз её получать, т.к. она может изменится в любой момент. И у каждого элемента она может быть другая, т.к. помимо класса в элементе могут добавить id и указать другую ширину у этого id
|
jule,
по ссылке выше смотрите как получить значение width |
jule,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<style type="text/css">
.link{
position:absolute;
border:1px solid #000000;
width:100px;
}
</style>
<div id="menu"><div class="link">First</div><div class="link">Second</div><div class="link">Third</div></div>
<script>
function f(space){
var i = 0, divs = document.querySelectorAll('.link');
len = divs.length , w = 0;
for (var i=0; i<len; i++) {
var elem = divs[i], computedStyle = window.getComputedStyle ? getComputedStyle(elem, '') : elem.currentStyle;
elem.style.left = w + (space* i) + "px";
w += parseFloat(computedStyle.width);
}
}
f(15);
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 16:34. |