在chrome下-webkit-box布局的一个bug
chrome,也就是webkit内核下作的检测, chrome版本是40, -webkit-box这种布局在移动端用的比较多,主要是因为pc端的浏览器内核参差不齐。 因为在写HTML的时候看上了-webkit-box的自动根据浏览器窗口大小自动排列的智能布局, 所以我也入了坑, 坑是这样的:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<style>
*{
margin:0;
paddign:0;
}
.webbox{
display: -webkit-box;
}
.webbox-vertical{
display: -webkit-box;
-webkit-box-orient:vertical;
}
.box-flex{
-webkit-box-flex:1;
}
body,html,#div{
width:100%;
height:100%;
}
.auto{
overflow:auto;
}
</style> <div id="div" class="webbox-vertical"> <div class="webbox">
............<br />
............<br />
</div>
<div class="webbox">
ddd<br />
ddd<br />
ddd<br />
ddd<br />
</div>
<div class="webbox box-flex">
<div class="webbox box-flex auto">
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<span>sfsdfsfsfsd</span>
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<span>sfsdfsfsfsd</span>
<a href="###">aaa</a><br />
<span>sfsdfsfsfsd</span>
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<span>sfsdfsfsfsd</span>
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br />
<a href="###">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> <a href="###">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> <a href="###">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> <a href="###">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> <a href="###">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> <a href="###">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br />
</div>
<div class="webbox">
111111111<br />
111111111<br />
111111111<br />
111111111<br />
</div>
</div> </div>
<script>
var aS = document.getElementsByTagName("span");
for(var i = 0; i < aS.length ; i++) {
aS[i].addEventListener("click",function(ev){
console.log(ev);
})
};
/*
chrome浏览器在webbox布局下的一个bug;
如果你的webbox布局下的元素里面存在a链接或者audio,checkbox这些元素,
当你点击这些元素, 滚动条会滚到最上面, 扯淡扯大了, 我勒个去;
*/
</script>
</body>
</html>
在webkit-box的布局元素中,如果你点击了a链接,这个链接的href为###, 如果这个元素的父级有滚动条,滚动条居然会自动滚到最上面(正常情况下不会跳的);
太扯淡的说,
解决方法就是:在webkit-box布局的元素中添加一个元素样式为width:100%;position:relative;overflow:auto;,
然后在这个元素的子元素再添加一个元素为样式为left:0;top:0;bottom:0;position:absolute; 然后把需要的滚动的HTML代码放进去, 滚动条出现了。。
这个是为什么我也搞不懂; 因为在mathon(遨游浏览器)测试没有这个问题, 归结为浏览器问题,上网也没找到资料, 记录下来, 防坑;
实现的代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<style>
*{
margin:0;
paddign:0;
}
.webbox{
display: -webkit-box;
}
.webbox-vertical{
display: -webkit-box;
-webkit-box-orient:vertical;
}
.box-flex{
-webkit-box-flex:1;
}
body,html,#div{
width:100%;
height:100%;
}
.auto{
overflow:auto;
}
</style> <div id="div" class="webbox-vertical"> <div class="webbox">
............<br />
............<br />
</div>
<div class="webbox">
ddd<br />
ddd<br />
ddd<br />
ddd<br />
</div>
<div class="webbox box-flex">
<div class="webbox box-flex">
<div style="width:100%;position:relative;overflow:auto;">
<div style="left:0;top:0;bottom:0;position:absolute;">
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<span>sfsdfsfsfsd</span>
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<span>sfsdfsfsfsd</span>
<a href="####">aaa</a><br />
<span>sfsdfsfsfsd</span>
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<span>sfsdfsfsfsd</span>
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br />
<a href="####">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> <a href="####">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> <a href="####">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> <a href="####">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> <a href="####">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> <a href="####">aaa</a><br /><input class="input-index ng-pristine ng-untouched ng-valid" ng-disabled="topic.checked" ng-model="topic.checked" data-topic-id="15Q2700664" type="checkbox"><br /> </div>
</div>
</div>
<div class="webbox">
111111111<br />
111111111<br />
111111111<br />
111111111<br />
</div>
</div> </div>
<script>
var aS = document.getElementsByTagName("span");
for(var i = 0; i < aS.length ; i++) {
aS[i].addEventListener("click",function(ev){
console.log(ev);
})
};
/*
chrome浏览器在webbox布局下的一个bug;
如果你的webbox布局下的元素里面存在a链接或者audio,checkbox这些元素,
当你点击这些元素, 滚动条会滚到最上面, 扯淡扯大了, 我勒个去;
*/
</script>
</body>
</html>
平常布局上面要注意符合html标准,要么会死的很惨。
张鑫旭的webkit相关资料,可以学习一下,打开;
w3c的资料,打开
在chrome下-webkit-box布局的一个bug的更多相关文章
- 记录Window系统下myeclipes连接linux下mysql所出现的一个bug
记录myeclipes远程连接mysql所出现的一个bug 今天在玩框架hibernate时,出现一个非常费解的bug,话不多说,先看bug Access denied for user 'root' ...
- Chrome 下,重复使用 XMLHttpRequest进行Post数据时,遇到一个奇怪的问题
var http_request; //在外面申明对象,主要为了在updatePage中使用 //无刷新更新内容 function post(url,parameter) { i ...
- 当fixed元素相互嵌套时chrome下父元素会影响子元素的层叠关系
问题:fixed元素被另一个fixed元素包含的时候在chrome下fixed子元素的定位会受到父元素的影响. demo(http://jsbin.com/qumah/1): <!DOCTYPE ...
- C-Flex 与 box布局教程
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html -阮一峰老师 http://www.w3cplus.com/css3/flexbox- ...
- flutter系列之:把box布局用出花来
目录 简介 LimitedBox SizedBox FittedBox 总结 简介 flutter中的layout有很多,基本上看layout的名字就知道这个layout到底是做什么用的.比如说这些l ...
- Chrome出了个小bug:论如何在Chrome下劫持原生只读对象
Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...
- 分享在winform下实现左右布局多窗口界面-续篇
之前的这篇文章<分享在winform下实现左右布局多窗口界面>已经实现了左右布局多窗口界面,今天本来是研究基于winform的插件编程,没想到顺便又找到了另一种实现方案,这种实现方案更简单 ...
- 如何在Chrome下Debug Mocha的测试
简介 经过前两篇文章的介绍,相信读者对Mocha应该有一定的认知了,本文重点讲述如何在Chrome下Debug Mocha Test, 方便你在测试fail的时候troubleshooting. 关键 ...
- ie8下使用knockoutjs遇到的一个模板异常
ViewModel中有一个数组,代码大概如下: function ReportViewModel(){ var self = this; self.extendedProperties = ko.ob ...
随机推荐
- UIWrapContent(NGUI长列表优化利器)
NGUI长列表优化利器 优化原理 NGUI3.7.x以上版本 有个新组件 UIWrapContent ,当我们的列表内容很多时,可以进行优化.它不是一次生成全部的child,而是只有固定数量的chil ...
- 转:[版本控管]TortoiseSVN 使用,抓出兇手,使用 Blame 查看每一行最後修改的人是誰
类似的官方的使用手段有: https://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-dug-blame.html from: http:/ ...
- Java8简单的本地缓存实现
原文出处:lukaseder Java8简单的本地缓存实现 这里我将会给大家演示用ConcurrentHashMap类和lambda表达式实现一个本地缓存.因为Map有一个新的方法,在 ...
- iOS崩溃调试的使用和技巧总结
在iOS开发调试过程中以及上线之后,程序经常会出现崩溃的问题.简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析Crash文件在iOS开发中是比较常见的. 现在网上有很多关于解 ...
- radio被选中,但是重复点击后事件不触发
网上找了好多帖子,都没用,在百度知道发现以下答案 知识点:使用 jq的prop才能设置 html $('.ss').click(function(){ $(this).find("input ...
- Linux 网络编程详解五(TCP/IP协议粘包解决方案二)
ssize_t recv(int s, void *buf, size_t len, int flags); --与read相比,只能用于网络套接字文件描述符 --当flags参数的值设置为MSG_P ...
- Altera SoC与Matlab的联合---第一步 软件安装与硬件测试
参考设计:http://cn.mathworks.com/help/hdlcoder/examples/getting-started-with-hardware-software-codesign- ...
- NetFPGA
From Wikipedia, the free encyclopedia The NetFPGA project[1] is an effort to develop open source har ...
- BGP--边界网关协议
要全面了解BGP,首先我们要回答以下看上去很简单的问题:为什么需要BGP,也就是说BGP是如何产生的,它解决了什么问题.带着以上问题,我们先简单的回顾一个路由协议发展的轨迹. 首先路由的实质是描述一个 ...
- 支持向量机通俗导论(理解SVM的三层境界)
原文链接:http://blog.csdn.net/v_july_v/article/details/7624837 作者:July.pluskid :致谢:白石.JerryLead 出处:结构之法算 ...