首先,此示例仅适用于支持:nth-childChrome或FireFox 的浏览器.我有一个无序列表,其中奇数编号列表项向左浮动并向左清除,偶数编号列表项向右浮动并向右清除.像这样:
HTML:
<ul class="waterfall">
<li style="height: 100px;">1</li>
<li style="height: 200px;">2</li>
<li style="height: 50px;">3</li>
<li style="height: 100px;">4</li>
<li style="height: 200px;">5</li>
<li style="height: 50px;">6</li>
<li style="height: 50px;">7</li>
<li style="height: 50px;">8</li>
</ul>?
Run Code Online (Sandbox Code Playgroud)
CSS:
.waterfall {width:302px;}
.waterfall LI {
min-width: 150px;
background-color: #CCC;
margin-top: 2px;
}
.waterfall LI:nth-child(odd) {
float: left;
clear: left;
text-align: right;
}
.waterfall LI:nth-child(even) {
float: right;
clear: right;
text-align: left;
}?
Run Code Online (Sandbox Code Playgroud)
目标:
所有奇数编号的列表项应浮动到左侧并堆叠在一起,除了2px边距之外没有间隙.偶数编号列表项也是如此,除非它们应该向右浮动.
问题简而言之:
我很困惑为什么,在这个例子中,LI#5不能出现在LI#4之上,LI#8不能出现在LI#7之上.换句话说,为什么LI#5清算LI#2,LI#8清算LI#5?另外,为什么LI#3不清楚LI#2(我不想要它,但如果LI#5正在清除LI#2,为什么LI#3不参加聚会)?
TL; DR
到目前为止,我的想法有些不确定.如果第一个元素稍后在标记中定义,则浏览器似乎不希望元素的顶部出现在另一个元素的顶部之上.真的吗?
我知道浮动元素被放置在一条线上,并且任何不适合该线的浮动元素将跳转到一条新线并从那里流动(与绝对定位元素的自由流动概念相反).换句话说,浮动元素从文档流中移除,但不完全像绝对定位元素那样,因为浮动元素仍然相对于它开始的任何行定位,并且它仍占用文档流中的空间.那么,浮动元素悬挂的下一个"线"如何确定?在这个例子中,为什么LI#3不清除LI#2,而LI#5是?
我不想要的:
一个聪明的解决方案,通过更改标记,放弃浮动或使用JavaScript来使此布局工作.我知道如何做到这一切.我只是希望受到漂浮的神秘方式的教育.
我有一个与嵌套if语句有关的奇怪语法问题.
此代码错误:
if(true):
if(true){
var_dump(true);
}
else:
var_dump(false);
endif;
Run Code Online (Sandbox Code Playgroud)
此代码没有错误(注意添加;):
if(true):
if(true){
var_dump(true);
};
else:
var_dump(false);
endif;
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
我在模型中有一些defults数据
window.AppState = Backbone.Model.extend({
defaults: function() {
return {
country: false,
region: false
};
}
});
var appState = new AppState();
Run Code Online (Sandbox Code Playgroud)
然后在路由器I中获取具有模型新值的数组,如下所示:
[["country", "new country value"], ["region", "new region value"]]
Run Code Online (Sandbox Code Playgroud)
现在在for循环中我循环更新所有收到的参数...我就是这样认识的
appState.attributes[arg] = val;
Run Code Online (Sandbox Code Playgroud)
但我认为还不清楚,因为在Backbone.js的文档中我读到了"属性"方法,并看到:"请使用set更新属性而不是直接修改它们." 所以我的问题是:如何使用set方法更改默认值的属性?
这个问题是这个问题的后续问题.
如果某些浏览器下载JS文件,即使用户已禁用JS,使用JS包含JS文件是否有意义,以确保用户不必被迫不必要地下载JS?
例如:
function inc(filename){
var body = document.getElementsByTagName('body').item(0);
script = document.createElement('script');
script.src = filename;
script.type = 'text/javascript';
body.appendChild(script);
}
Run Code Online (Sandbox Code Playgroud)
我在这里找到了上面的代码.
这段代码有什么缺点吗?我还没有测试它以确保它正常工作,但它似乎非常简单.
我试图避免多个HTTP请求加上代码的下载足迹强制用户明显不想要它.
此外,如果用户在最初加载网站后启用了JS,这将如何工作?
这甚至重要吗?是否值得关注?
我有一个这样的链接:<a href="javascript:window.print();">Print</a>.我试图在点击它时增加一个PHP变量.技术上我可以通过提交表单来实现,但我确信有一种更简单的方法.有任何想法吗?
javascript ×3
php ×2
backbone.js ×1
browser ×1
css ×1
download ×1
html ×1
include ×1
jquery ×1