我的网站上有一种“马赛克”,他在一个宽度以百分比测量的 div 内。
问题
如何在宽度以百分比测量的 div中集中内容(更具体地说,镶嵌)?
编码
HTML:
<div class="main-container">
<div class="container">
<div class="right">
Some menu.
</div>
<div class="left">
<ul class="list">
<li>Showcase #1</li>
<li>Showcase #2</li>
<li>Showcase #3</li>
<li>Showcase #4</li>
<li>Showcase #5</li>
<li>Showcase #6</li>
</ul>
</div>
</div>
</div>
CSS:
.main-container {
background-color: #c19fe2;
width: 95%;
margin: 0 auto;
}
.container {
position: relative;
}
.left {
background-color: #ebd6ff;
width: 300px;
height: 200px;
}
.left li {
width: 50px;
height: 300px;
background-color: red;
list-style: none;
}
.right {
float: right;
width: 270px;
height: auto;
padding: 15px;
background-color: #8863ac;
}
jQuery/JavaScript:
/** Packery (jQuery Grid like Masonry/Prototype) **/
$(function() {
var $container = $(".left");
// initialize
$container.packery({
itemSelector: "li",
gutter: 5
});
});
/** Centralize the main container **/
function calculateMainContainerWidth() {
$realWidth = $(".main-container").width() - $(".right").outerWidth(),
$containerContent = $(".left");
$containerContent.css("width", $realWidth);
}
$(window).on("resize", function() {
calculateMainContainerWidth();
});
calculateMainContainerWidth();
调试,FiddleJS
技术细节
该calculateMainContainerWidth
函数工作正常——它正在计算我的容器的宽度,但我不能用它margin: 0 auto;
来完美地集中。当然,这背后有一个逻辑冲突阻止我去中心化,但我想知道是什么。
参考
马赛克由Metafizzy 的插件 Packery制作。
进步
看看我自己的答案——解决方案就在那里。