CSS的通配符*内不能用display属性?

本来是想简单的reset一下,并且做测试,希望所有元素都为块级元素,于是给*加了个display:block属性值结果发现居然就无法正常解析style了…想去搜一下是怎么回事呢,却找不到,本想多测试几个属性,试试这个通配符是否还有其他属性无法使用,结果也没试出来,就此抛下疑问?难道不能这样写

<!DOCTYPE html>
<html>
<head>
<title>css * cannot use display property</title>
</head>
<style type="text/css">
* {display: block;border: 1px solid #f00;padding: 10px;margin-bottom: 10px;}
body {background-color: #fc0;}
</style>
<body>
<p>body with background color but styles come out too! we dont want this happen!</p>
<span>you can also try it yourself :)</span>
<img src="#" width="300" height="300" />
<a href="#">all blocks now?!</a>
</body>
</html>

而,假设这样的话,不同浏览器效果更是离谱,这里以IE6,7,8,CHROME,IE11为例.测试结果如图:

通配符有了display属性的结果
通配符有了display属性的结果

暂不提这个IE6连HTML节点也算进去了(注意滚动条边框),就说这个不同浏览器的效果,也值得研究下了.

关于火狐的文字换行问题思考

遇到这个问题,可以说是巧合吧,由于场景可能过于复杂我也不不方便进行大量测试,我做的CMS模板中,正好有一处读取18个字符长度,而这个长度在中英文和特殊字符混排的时候是多变的,所以并不固定,不过一般情况下我会保守留一个比较宽的宽度,让一行内可以不出意外的容纳下任何混排的标题.

先来看看问题图片:

关于FF和CHROME在行内文字换行测试(附IE6测试)
关于FF和CHROME在行内文字换行测试(附IE6测试)

事实上,并不顺利~我将其代码片段弄下来做了个demo,大家测试一下(说明:chrome版本34, firefox版本29,IE6可以尝试测试word-wrap:break-word;同时对其进行hasLayout测试观察变化).

<!DOCTYPE html>
<html>
<head>
	<title>关于FF和CHROME在行内文字换行测试(附IE6测试)</title>
</head>
<style type="text/css">
.width-346px {width: 346px;}
.font-style {font:bold 18px/2 "Microsoft YaHei";/*word-wrap:break-word;overflow:hidden; zoom: 1;*/}
</style>
<body>
<h1>这是关于火狐和谷歌浏览器的区别测试</h1>
<div class="width-346px">
	<a href="#" class="font-style">Intel打响反击战 Computex2014平板综述</a>
	<span class="font-style">Intel打响反击战 Computex2014平板综述</span>
	<p class="font-style">Intel打响反击战 Computex2014平板综述</p>
</div>
</body>
</html>

虽然我写了三行不同标签,相同样式的文字,其实跟标签名没什么关系了,有人可能会怀疑我没有做css reset,这点可以排除我为了减少代码量就没有写,实际上写上CSS RESET一样在火狐下会换行,我尝试使用word-wrap:break-word;等属性也是无效的.因此,这个火狐浏览器对于此处换行的解释我也无从得知,但是可以肯定一点,虽然外层我限制了width-346px,实际上从火狐的开发者工具上来看,内部三行内容的真实宽度也依然是346px,因此并不是内部内容宽度大于父级导致换行!原因不明!

最后,没有办法,只好给父级加宽了1px,火狐就显得正常了…若有人有兴趣看到此问题,望共同讨论研究下ff的兼容性问题.


2014年6月16日15:03:25

在Bob的提醒下,的确是这个问题,加一个white-space:nowrap;即可,不过你属性名敲掉了个字母哦~最后献上解决方案:

<!DOCTYPE html>
<html>
<head>
    <title>关于FF和CHROME在行内文字换行测试(附IE6测试)-解决!</title>
</head>
<style type="text/css">
.width-346px {width: 346px;}
.font-style {font:bold 18px/2 "Microsoft YaHei";white-space:nowrap;}
</style>
<body>
<h1>这是关于火狐和谷歌浏览器的区别测试</h1>
<div class="width-346px">
    <a href="#" class="font-style">Intel打响反击战 Computex2014平板综述</a>
    <span class="font-style">Intel打响反击战 Computex2014平板综述</span>
    <p class="font-style">Intel打响反击战 Computex2014平板综述</p>
</div>
</body>
</html>

以后遇到莫名其妙的换行问题,可要多多注意.参考来自Bob的word-break、word-wrap、word-space、white-space对比图

wordpress默认主题引用google fonts导致访问速度过慢解决

这几天博客访问量下降,虽然本来每天就不多,这下可好,发现网站直接打不开,明白的人,都知道谷歌的服务器受影响了,所以博客就打不开了,估计很多wordpress中枪,临时解决方案就是将那些引用自谷歌服务器的文件取消,可是如何才能取消呢,小弟无才,自己未能解决,最终从网上找到两篇,一篇是cnblogs上的,写的好像很不错,不过没试成功,另一篇,更离谱,修改functions.php的一段代码,我却都没找到,也不知道是什么版本的.

最终还是用了插件,总算舒服了些,其实我不太喜欢给wordpress安装一大堆插件,等过几日有时间再来研究一下这个或许跟调用twentytwelve_get_font_url有关的函数吧.

有需要的可以安装此插件,插件名称: Disable Google Fonts

安装后启用即可,生在中国,要么忍要么…算了不想说了.还是乐观点吧.

IE6和IE7在同级相邻元素间边距问题

IE6和IE7一向令网页制作者头痛,虽然有些经验丰富的前端开发人员能快速解决大部分问题,但是有时候,仍然会遇到一些令人疑惑的问题.我在做一个简单效果时,发现有时候及时清浮并不是一件好事,通过触发hasLayout反而出了问题.接下来详细说说这个IE6和IE7的问题.

两个同级的相邻的元素A和B(均为块级元素),当A内部有元素浮动,并且拥有外边距时,B则会贴紧A的最后一个元素,假设B没有清除浮动,则会与A的最后一个元素的左右边距保持边距距离,例如图一:

B没有清浮的情况下,左右边距正常
B没有清浮的情况下,左右边距正常

继续阅读“IE6和IE7在同级相邻元素间边距问题”

WORDPRESS自定义模板后的PO文本翻译修改以及MO修改教程

wordpress这个程序虽然强大,但是有时候根据自己需求不同,需要进行一些模板的修改,这次就我自定义模板后出现的一些问题和大家分享下,内容涉及到主题的修改以及PO文本翻译修改,还有MO文件的修改等内容.

先简单说一下我的需求,我希望图片附件模板(image.php)里增加一条作者信息(实际上还是为了google的seo优化处理的),而默认是没有的,怎么处理,可参考该页面OCZ Vertex4包装正面图一(当然目前是已添加好的),如图:

修改图片内容模板信息
修改图片内容模板信息

现在应该很容易理解我要做的事情了吧,这个东西看起来似乎也是很简单的,不过当你看完这篇文章,也许你不会轻易这样想了.至少我完美解决这样的小问题花了3个小时,不过我的确不熟悉wordpress和php,也没有人能帮助我,好吧,闲话少说,步入正题. 继续阅读“WORDPRESS自定义模板后的PO文本翻译修改以及MO修改教程”