我目前正在构建一个布局流畅的网站。那里的主流流体模板实际上都没有带有可以在调整窗口大小或以不同宽度加载时自行调整的库存水平导航。
我一直在阅读在线教程和其他试图解决类似问题的 Stack Overflow 解决方案,其中一些非常聪明并且非常接近,但没有一个能够处理类似块的悬停效果a {display:block; padding:10px 40px;}
a:hover {background:#ccc;}
。其他人则使用巧妙的方法来创建宽度相同且随窗口宽度调整的块链接;但是,这还不够精确,我不希望在链接块之间创建相同的宽度,而是希望在链接之间具有相同的左/右填充。这要精确得多,因为链接之间的距离是相同的。
我已经放弃了用 CSS 做这件事,也许其他人有处理可变填充的解决方案,或者非常接近的东西。无论如何,我决定尝试在 jQuery 中处理它。
我以前从未真正编写过任何 jQuery,但多年来一直使用多个插件。我想我至少应该在发布之前尝试想出一些东西。我有它的工作,我想知道如果用户调整窗口大小,而不仅仅是在页面加载时,是否可以添加动态调整的能力。我也想知道他们的做法是否有问题。
这是我到达的地方的链接:http: //jsfiddle.net/XZxMc/3/
的HTML:
<div class="container">
<div class="row">
<div class="twelvecol">
<ul>
<li><a href="#">short</a></li>
<li><a href="#">longer</a></li>
<li><a href="#">even-longer</a></li>
<li><a href="#">really-really-long</a></li>
<li><a href="#">tiny</a></li>
</ul>
</div>
</div>
</div>
CSS:
.container {
background:#ccc;
font-family:arial, helvetica;
}
.row {
width: 100%;
max-width: 700px;
min-width: 600px;
margin: 0 auto;
overflow: hidden;
background:white;
}
.row .twelvecol {
width:100%;
float:left;
}
ul {
text-align:center;
}
ul li {
display:inline-block;
zoom:1;
*display: inline;
}
ul li a {
padding:12px 39px;
display:block;
}
a {text-decoration:none;}
a:hover {background:blue; color:white;}
JavaScript:
// Initial left/right padding of links set in css
var paddingIni = 39;
// Initial max-width of .row
var widthIni = 700;
// Number of links multiplied by 2; 2 because we will be reducing the padding by multiples of 2px total, 1px left, 1px right
var linkQ = 5*2;
// Current width of link container
var twelveWidth = $(".row .twelvecol").width();
// (Initial width / 10) - (Current width / 10); this gives us how much to subtract from our inital padding of 39
// Is there anything wrong with the way this is written?
var paddingSub = (widthIni/linkQ)-(twelveWidth/linkQ);
// Simply subtracting above computation from our inital padding of 39
var paddingNew = paddingIni-paddingSub;
$("ul li a").css("padding-left",paddingNew);
$("ul li a").css("padding-right",paddingNew);
此外,如果有人不介意解释为什么这不起作用,这是我尝试在一个等式中完成所有操作:
var whyisthiswrong = 39 - ( (700/(5*2)) / ($(".row .twelvecol").width()/(5*2)) );