最近看了大神的一篇文章,于是尝试了一下里面说的bug以及修复

1.Chrome下absolute绝对定位元素部分display属性值不渲染bug

首先还原一下bug..

ff下的下效果

点击按钮后的效果

代码如下:

<style>

.img{
width:200px;
position:absolute;
-webkit-transform: translateZ(0);
}
.btn{
width:200px;
appearance:button;
-moz-appearance:button; /* Firefox */
-webkit-appearance:button;
background:blue;
display: block;
}

</style>

<body>
<div id='demo'>
<button class='btn' id='btn'>图片display:inline-block</button>
<strong>点击上面按钮,改变图片display水平:</strong><img src="./img/1.jpg" id='img' class='img' alt="">
</div>
</body>
<script>
//兼容绑定事件
function bindEvent(elem,type,fn){
window.addEventListener?elem.addEventListener(type,fn,false):elem.attachEvent('on'+type,fn);
}
var btn = $('btn'),img = $('img'),demo = $('demo');
bindEvent(btn,'click',function(){
if(img.style.display == 'block'){
img.style.display = 'inline-block';
btn.innerHTML = '图片display:inline-block';
}else{
img.style.display = 'block';
btn.innerHTML = '图片display:block';
}
});
</script>

现在看看chrome下的效果

可以看出img没有随着display的改变而换行,

要注意的是,只有当图片元素设置了position,并且没有设top和left的情况下才会出现这种bug

bug的修复

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style>
.translateZ{
-webkit-transform: translateZ(0);
}
.img{
width:200px;
position:absolute;
-webkit-transform: translateZ(0);
}
.btn{
width:200px;
appearance:button;
-moz-appearance:button; /* Firefox */
-webkit-appearance:button;
background:blue;
display: block;
}
</style>
<body>
<div id='demo'>
<button class='btn' id='btn'>图片display:inline-block</button>
<strong>点击上面按钮,改变图片display水平:</strong><img src="./img/1.jpg" id='img' class='img' alt="">
</div>
</body>
<script>
//获取元素
function $(id){
return document.getElementById(id);
}
//判断类
function hasClass(obj, cls) {
return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}
//增加类
function addClass(obj, cls) {
if (!this.hasClass(obj, cls)) obj.className += " " + cls;
}
//删减类
function removeClass(obj, cls) {
if (hasClass(obj, cls)) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
obj.className = obj.className.replace(reg, ' ');
}
}
//兼容绑定事件
function bindEvent(elem,type,fn){
window.addEventListener?elem.addEventListener(type,fn,false):elem.attachEvent('on'+type,fn);
}
var btn = $('btn'),img = $('img'),demo = $('demo');
bindEvent(btn,'click',function(){
if(img.style.display == 'block'){
img.style.display = 'inline-block';
removeClass(demo,'translateZ');
btn.innerHTML = '图片display:inline-block';
}else{
img.style.display = 'block';
//addClass(demo,'translateZ');
btn.innerHTML = '图片display:block';
}
});
</script>
</html>

修复的方法,利用的是 -webkit-transform: translateZ(0);

改变display为block的时候,同时添加 -webkit-transform: translateZ(0);

改变display为inline-block的时候,同时删除 -webkit-transform: translateZ(0);

2.Chrome下absolute绝对定位元素具有overflow属性的块状子元素visibility hover不渲染bug

Chrome浏览器下,绝对定位元素,同时visibility:hidden时候,如果子元素具有块状水平,

同时设置了overflow:hidden; 则父元素hover时候,无法让子元素visibility:visible渲染生效!

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style>
.outer{
position:absolute;
visibility: hidden;
}
.bug{
overflow: hidden;/* 重要条件 */
}
.demo:hover .bug {
visibility: visible; /* Chrome浏览器下,此声明无效 */
}
</style>
<body>
<div class='demo'>
Chrome罕见visibility渲染bug(<em>hover me</em>)
<div class='outer'>
<div class='bug' id='bug'><img src="img/1.jpg"></div>
</div>
</div>
</body> </html>

ff下的效果

chrome下的效果

其实造成这效果的原因和position有很大关系,如果把position去掉visibility的效果有可以呈现了

但是如果项目需要用到position:absolute,那么可以用下面的方法

.hover:hover .bug {
visibility: visible;
-webkit-transform: translateZ(0); /* 解决方法*/
}

添加后,问题就解决了

本文参考自http://www.zhangxinxu.com/wordpress/2015/01/chrome-absolute-display-visibility-render-bug/

关于chrome下的bug的更多相关文章

  1. chrome下float元素下input选中内容bug

    今天在写一个小demo的时候,发现chrome下一个很奇怪的bug. 我的代码如下: <!DOCTYPE html> <html lang="en"> &l ...

  2. Chrome出了个小bug:论如何在Chrome下劫持原生只读对象

    Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...

  3. IE下设置unselectable与onselectstart属性的bug,Firefox与Chrome下的解决方案

    在IE下给DIV设置unselectable与onselectstart属性,可以让div的内容不能选中,这个功能在很多情况下,非常有用,但是他的bug太明显, 直接使用一个DIV是可以的,比如: & ...

  4. Linux下Chrome浏览器的BUG

    “我胡汉三又回来了”,好久没出现在博客园了,准备考试什么的最烦躁了,今天又重新整了下我的Ubuntu,结果发现了一个Chrome浏览器的Bug,但是与其说它是个Bug,还不如说它是个Joke. 好吧, ...

  5. IE下的bug

    断断续续的在开发过程中收集了好多的bug以及其解决的办法,都在这个文章里面记录下来了!希望以后解决类似问题的时候能够快速解决 ,也希望大家能在留言里面跟进自己发现的ie6 7 8bug和解决办法! 1 ...

  6. input 光标在 chrome下不兼容 解决方案

    input 光标在 chrome下不兼容 解决方案 height: 52px; line-height: normal; line-height:52px\9 .list li input[type= ...

  7. ie下的bug之button

    场景描述: 现在页面设计是都喜欢自定义按钮样式,某日接收到页面发现在ie下有bug,上代码: <div> <button><span><a href=&quo ...

  8. 如何在Chrome下Debug Mocha的测试

    简介 经过前两篇文章的介绍,相信读者对Mocha应该有一定的认知了,本文重点讲述如何在Chrome下Debug Mocha Test, 方便你在测试fail的时候troubleshooting. 关键 ...

  9. 在chrome下的文本框sendkeys,提示element can't focus--解决方法

    在chrome下的文本框sendkeys,提示element can't focus--解决方法(成都-半步流雲,群友解决) 成都-半步流雲1.升级你的chromedriver,2.降chrome版本 ...

随机推荐

  1. 作业3:PSP记录耗时情况

    PSP2.1 Personal Software Process Stage Time planning 计划 10min Estimate 估计这个任务多久完成 150min Developing ...

  2. [C#]创建Windows用户及组

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  3. 使用 IIS 在 Windows 上托管 ASP.NET Core(Windows安装实践)

    原文地址 https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.0&tabs= ...

  4. (zxing.net)一维码Code 93的简介、实现与解码

    一.简介 一维码Code 93: Code 93码与Code 39码的字符集相同,但93码的密度要比39码高,因而在面积不足的情况下,可以用93码代替39码.它没有自校验功能,为了确保数据安全性,采用 ...

  5. Message Loop 原理及应用

    此文已由作者王荣涛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Message loop,即消息循环,在不同系统或者机制下叫法也不尽相同,有被叫做event loop,也有 ...

  6. nova 宿主机重启自动恢复虚拟机运行状态

    1. 宿主机重启自动恢复虚拟机运行状态 1.1 参数描述与默认值 # Whether to start guests that were running before the host reboote ...

  7. java—ThreadLocal模式与OSIV模式(53)

    ThreadLocal: 维护线程局部的变量. ThreadLocal 不是线程.它就是一个Map.可以保存对象. 它保存的对象,只与当前线程相关. 当一个线程还没有运行完成时,如果不想传递数据,可以 ...

  8. D - How Many Tables (并查集)(水题)

    点击打开链接 Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius want ...

  9. 【Oracle 12c】CUUG OCP认证071考试原题解析(32)

    32.choose the best answer View the Exhibit and examine the data in EMP and DEPT tables. In the DEPT ...

  10. luoguP4647 [IOI2007] sails 船帆

    https://www.luogu.org/problemnew/show/P4647 首先发现答案与顺序无关,令 $ x_i $ 表示高度为 $ i $ 的那一行帆的个数,第 $ i $ 行对答案的 ...