标签:css

浏览模式: 标准 | 列表 | 图文
CSS 中的黄金分割率

CSS 中的黄金分割率

这是一位叫 Christos Chiotis 的希腊 Web 设计师发表在 CssGlobe 的一篇文章,讲述了黄金分割率在 CSS 中的应用。黄金分割率是一个应用广泛的数学常数,大约为 1.6180339887。黄金分割率用在 Web 设计中,可以为设计带来更多视觉上的和谐。

在一个简单的两栏式页面布局中,使用两个容器,第一个容器用来显示主要内容,第二个容器显示侧条。比如,页面宽度为 960 px,使用黄金分割率,主内容容器的宽度应该为 960 / 1.62 = 593 px,而侧条的宽度为 960-593=367 px。

作者建议,在 Web 排版与布局中可以使用以下基本 CSS 设置

  • line-height = font-size * 1.62
  • paragraph margin = paragraph line-height * 1.62 / 2
  • header’s margin-top = headers line-height * 1.62

不过对中文而言,至少 font-size 和 line-height 之间使用黄金分割率是不适合的,假如中文字体使用 12px 的话,最佳行高是 22px,如果字体使用 14px 的话,行高应该使用 24px - 译者。

另一个例子,在表单中,输入框的宽度应该是标签文字的宽度乘以 1.62。而对于显示在 Web 上矩形来说,它的宽度应该是高度乘以 1.62。

这样一来,Web 设计师同时需要很好的计算能力,至少要在旁边放一台计算器,为了节省时间,作者建议在设计中随时记住一个 62/38 原则,在任何需要分割的地方,都使用 62% 和 38% 作比例。
对于需要分割成三份的场合,可以先按 62%,38%原则分成两份,再将那份大的按 62% 和 38% 的比例分割。

--------

上述文字来自于http://www.newsteng.com/html/2011/web-based_1220/69.html,因为自己不了解设计,所以备份一下。以后除了自己用还可以用来installB之类的

CSS的一些兼容性的备份资料

CSS的一些兼容性的备份资料

纯资料,做备份,因为对CSS不太了解,所以复制了群内某人的发言。

#test{
color:red; /* 所有浏览器都支持 */
color:red !important;/* Firefox、IE7支持 */
_color:red; /* IE6支持 */
*color:red; /* IE6、IE7支持 */
*+color:red; /* IE7支持 */
color:red\9; /* IE6、IE7、IE8支持 */
color:red\0; /* IE8支持 */
}

好纠结的东西啊。

走走停停看看的:CSS通用元素选择器的都市流言

走走停停看看的:CSS通用元素选择器的都市流言

在转这篇文章之前,我先说一点项目中遇到的问题,公司的主页最近改版上线,但是上线后出了一点问题,是CSS方面的问题。

CSS文件很多,前端把它分的很细,每一个小的widget部位就是一个单独的CSS文件,这样确实方便了有重复内容时的工作量减轻。于是我们在上线后,对CSS文件进行了合并,用的是Yii的插件 EclientScript(@hightman开发的一个插件)。CSS和JS都顺利合并了,但结果却不太正常。经过仔细检查发现是每个文件头的@charset=utf-8导致了这个问题。合并后,所有的文件内容都被引用到一起,所以造成了合并后的文件中“@charset=utf8”有好几个,但是为了保证文件是按utf-8格式被加载于是保留了最上面的@charset=utf8,其余的都删除了。OK,这时候所有的流量器都正常了。

结果第二天,老板过来说,在IPAD下不正常,于是继续排查,最终发现还是这个@charset=utf8的原因。前面说过,我们只保留了第一个文件的UTF8的判断,其他的都清空了,那为什么还会出错呢?经过测试,发现@charset=utf-8只能在第一行才有效,在其他行时,safari不认,而EClientScript在压缩文件后,会在文件第一行加上这个文件对应实际文件的地址,于是就让@charset=utf8到了第二行。所以IPAD上面显示就不太正常了。。

接下来就转载了:CSS通用元素选择器的都市流言,原文来自:http://shawphy.com/2010/11/css-universal-selector.html

本文尚未有测试数据支持,以下结论仅是根据现有情况的一种解释。

关于 * 这个选择器,一直有个疑惑,到底是否影响效率。在先前的观念中,这由于要匹配所有的元素,让每一个元素都带上这个属性,所以会影响页面的效率。但近来的思考,觉得这应该不会影响效率。为此还特地写过一篇博文,里边提到了这点:真的还需要reset.css么?

而这篇文章中我打算着重阐述为何 * 这个选择器不会影响效率。

上周六去参加了 web标准化交流会,席间 winter 从浏览器(webkit)的角度分享了关于页面渲染的过程。其PPT也可以在前面的链接中下载到。

其中一个很重要的过程是,当页面载入过程中,CSS 和 HTML 是并行下载的。并且通常CSS是在HEAD中引入的,并且体积不如HTML大,所以CSS会先下载完。下载的过程中浏览器就已经开始对CSS中的规则进行 索引,也就是已经确定哪一个元素呈现的样式是如何的了。同时,浏览器根据HTML构建出的DOM树,其中的每一个元素会直接去CSS规则索引中去比对,构 建出渲染树。这个过程都是并行的,并且CSS规则是进行了索引的,因此速度非常的快速。

那么我们看看CSS规则的来源主要有2个,一是浏览器内置的元素样式,Firefox 3.x版是放在目录下的res文件夹内,4.0版和Chrome中没找到(这里是我的主观臆断不太可靠,大家自行辨别),另一个就是页面提供的。根据查看 放在 res 文件夹下的 CSS 文件就可以得知,就是是什么样式都不写,已经为每一个HTML元素设定好了基本样式了。

那么看看我们所忌讳的事情,不用*{margin:0;padding:0},而是使用

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
}

看看这一大坨东西啊,难道不是跟上面的 * 选择器一个用途么?对每个元素(至少是常用元素),添加样式。其实作用是一样的,并且就算没有这一坨,浏览器内置样式也在对每个元素设置样式。之后 HTML 文件中的每一个元素,可以很容易找到自己应当呈现的样式了。

那么,对于之后添加的,会不会有性能影响呢?也不会,由于CSS规则已经确定并索引了,所以今后增加的元素也不过就是简单比对一下而已,不会多走一步的。

所以,由此得出结论,只要有需要,大胆的使用 * 吧,他不会给你从性能上增加额外的麻烦。

最后补两个前端优化小知识:
1,由于CSS规则和HTML是并行载入的,因此把CSS放在HEAD中是非常有必要的。
2,少使用 :last-child 。因为这个选择器无法索引起来,必须等DOM构件完,才能知道他是不是父元素中最后的那个 元素。这种就非常慢了,慎用。

----EOF--

注:文中@charset=utf-8我格式可能写的不对,只是表达一个意思,因为我没有dreamwaver,而所说DW在写CSS的时候,默认会在第一行加上这个玩意。。。

css之浏览器hack

css之浏览器hack

来自颓废小魔的博客,主要是自己了解一下,这样万一哪天自己要写CSS了也可以参考一下:

height:100px; /*正常情况*/
[;color:#0F0;]/* Sa,CH */
height:100px\9; /*IE全部系列*/
*height:100px; /*IE6 IE7识别*/
_height:100px; /*IE6识别*/
height:100px\0; /*IE8识别*/

发现这些写法都好妖啊。。还是firefox好。不过,我也发现一点问题那就是UBUNTU下的FF和WIN下的FF看我的博客的样式居然也不太一样估计是字体的关系了。。(很明显的是我用openoffice的WORD文档让老婆帮我打印的时候,字体变的一塌糊涂)

CSS中media标签的作用

在网页中,看到使用CSS的地方,大多数都会有这么一句:

<link rel="stylesheet" type="text/css" href="global.css" media="screen">

那么,究竟这个media有什么作用呢?通过查下资料了解到:

all-- 用于所有设备类型
aural-- 用于语音和音乐合成器
braille-- 用于触觉反馈设备
embossed-- 用于凸点字符(盲文)印刷设备
handheld-- 用于小型或手提设备
print-- 用于打印机
projection-- 用于投影图像,如幻灯片
screen-- 用于计算机显示器
tty-- 用于使用固定间距字符格的设备。如电传打字机和终端
tv-- 用于电视类设备

虽然media有10个值,但我们经常看到的也就print,和screen两种。当然也会有没有media标签的情况,这个时候其实就是默认media="all"。
既然如此,那我们也就相当于了解了,如果你需要打印,那么你在按下打印的时候,系统就会默认调用media="print"所对应的CSS文件了。也因此这样可以让你更好的整理你的打印页面,比如把一些不需要打印的内容屏蔽掉、优化打印页面(让内容更利于被打印)等等

虽然我不是前端,但。。了解一下这些内容还是有点用处的。

写HTML和CSS的新方法

写HTML和CSS的新方法

Zen Coding 一个用来简化编写 HTML,XML, XSL (或是其它一些诸如此类格式的编辑器)。其主要是用一种缩写方式的语法来书写大量重复和无味的HTML,很像CSS语法。下面是一个例子:div#page>div.logo+ul#navigation>li*5>a

效果就是:

<div id="page">
<div></div>
<ul id="navigation">
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ul>
</div>

这玩意是我在PHPRPC群里缘起缘灭推荐的,看了一下,效果还不错。。再去官网看了一下,居然有支持notepad++,很兴奋的下载下来使用了。效果还不错。

如果你一直是在用手写HTML代码而不是用IDE,确实 推荐一下。

上面的演示内容来自:http://coolshell.cn/?p=2406,官网请点击:Zen Coding

PS:如果你真的不会用,没关系,这里还有一个PDF下载下来看看就行了:splitarchivepage.rar

Rel与CSS的联合使用

Rel与CSS的联合使用

说实话,rel在我眼里除了link CSS的时候用过,其他时候我还真没用过。根本不知道REL是用来干嘛 的。看了这篇文章才知道原来Rel还可以这么用。

原文是

Rel-License 是微格式的开发标准之一,简单的说就是通过给引用标签(通常是链接)加上REL属性,来标明所引用链接/数据与文章的关系。

Wordpress很早就引入了rel标准,在我们添加新链接的时候就可以看到“关系”属性。

早期某些社交类搜索引擎可根据这个标签来判断人与人之间的关系,但它对网页开发来说并无意义,值得庆幸的是随着浏览器的逐渐升级,我们可以利用 CSS属性选择器以及REL来做一些有意思的功能。

这是一段带有REL属性的HTML结构。

<ul>
<li><a href="#" rel="civil">小李</a></li>
<li><a href="#" rel="party">局长</a></li>
</ul>

页面中他呈现这个样子

965f8c601c58b086822aa0244a850b1b

因为局长和小李是两个不同的阶级,所以我们应该有区分他们,我打算在小李和局长后面增加两张图片让他表现出这个样式。

708998b36f7757863dafde9a8607af92

过去,我们需要在两个链接标签上增加不同的class来实现这种样式,并且我们需要针对不同的样式书写不同的CSS

<style>
.c,.b {background:url(01.png) right center no-repeat;}
.b {background-image:url(02.png);}
</style>
<ul>
<li><a href="#" rel="civil" class="c">小李</a></li>
<li><a href="#" rel="party" class="b">局长</a></li>
</ul>
现在,我们可以利用REL属性以及属性选择器来完成这个工作。
a[rel~="civil"]{background:url(01.png) rightright center no-repeat;}
a[rel~="party"]{background:url(02.png) rightright center no-repeat;}
同时,我们的HTML结构也可以剔除那些多余的样式了。
<ul>
<li><a href="#" rel="civil">小李</a></li>
<li><a href="#" rel="party">局长</a></li>
</ul>
另外:ie6不支持属性选择器,但我们可以用JS来修复这个问题。

--EOF--

最后一句话实在让人寒心,不过总算也可以这样的做了,再过一两年,还有IE6的存在吗?IE6的时间够长了吧?好象从02年开始到现在,都经历了8年左右的时间了,居然还没有被消亡。习惯这东西真害人。。。。

原文地址为:rel与CSS的联合使用,不过其实我更喜欢第二幅图后面的小图标

CSS Position Fixed for IE6

我对CSS的了解少之又少,还好公司有美工,非常精通这些。但偶尔在自己写的时候可就没有人帮助了。所以,看到点资料,都会想着记下来。。

想来司徒正美的英文比我好多了,他还能经常去国外的网站,我就不行。。。

以下就来自他的博客了:

逛mootools核心成员Thomas Aylott的 博客看到,不过有点标题党了,实际效果并没有那么灵光,只是定义四个类,分别用来固定视口的上下左右。很遗憾,它无法解决与 top,bottom,left,right并用的问题(见例子)。它利用到IE8已经废弃的expression来计算页面的大小,从而固定我们想固定 的元素。里面用到一技巧,就是给html或body元素添加一张背景图片,并设置background-attachment:fixed,用于强制在页 面重绘之前执行CSS,也就是执行它里面的expression。另,我们也不需要一张真的图片,我们给它一个about:blank命令就可以,就像平 时对付链接一样,仅仅就是想要一个hover效果非得塞给它一个href。

.fixed-top {position:fixed;bottombottom:auto;top:0px;}
.fixed-bottombottom {position:fixed;bottombottom:0px;top:auto;}
.fixed-left {position:fixed;rightright:auto;left:0px;}
.fixed-rightright {position:fixed;rightright:0px;left:auto;}

* html,* html body {background-image:url(about:blank);background-attachment:fixed;}
* html .fixed-top {position:absolute;bottombottom:auto;top:expression(eval(document.documentElement.scrollTop));}
* html .fixed-rightright {position:absolute;rightright:auto;left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth-(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||0)));}
* html .fixed-bottombottom {position:absolute;bottombottom:auto;top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));}
* html .fixed-left {position:absolute;rightright:auto;left:expression(eval(document.documentElement.scrollLeft));}
原文中还有例子,而且用他的话来说:要真正解决IE6的这个bug,就需要用到Dean Edwards大神的IE7.js。我是没用过啦。。。。毕竟不做前端

原文来自于:http://www.cnblogs.com/rubylouvre/archive/2009/11/14/1603113.html

CSS让你的IE浏览器崩溃

CSS让你的IE浏览器崩溃

真的从来没有想过,CSS也能够让浏览器崩溃,看到本文的时候,说老实话是吃了一惊。好意外啊。
在测试了几个链接后才发现,现实是残酷的。。让我们看原文吧。

原文地址:

严格来说不单是CSS就能令IE浏览器崩溃(crash),而要配合相应的XHTML架构。到现时为止发现有两种正常写法及一种错误结构分别导致会 IE6、IE7崩溃(crash),至于原因我尝试寻找过答案但至今还没找到…如你有这方面的认识或更详细的资料很希望你能分享!

1 crash IE6 code

Demo:http://blog.gulu77.com/demo/200808/crash_ie6.html

此BUG只存在IE6中,当伪类为 a:active 时同样会遇到此问题

<style type="text/css">
a{position:relative;}
a:hover{float:left;}
</style>

<a href="">崩溃IE6 ,crash ie6</a>

解决方案:为 <a> 添加 zoom:1; 令其触发haslayout

<style type="text/css">
a{position:relative;zoom:1;}
a:hover{float:left;}
</style>

2 crash IE6 code

这是HTML结构错误而导致IE6的崩溃,在<col width="100"/>前或后添加任何字符均会导致IE6 Crash

Demo:http://blog.gulu77.com/demo/200808/HTML_errors_crash_ie6.html

<table style="table-layout:fixed;">
<colgroup>
<col width="100"/>Crash IE6
</colgroup>
</table>

Bug from yoogisa http://forum.standardmag.org/viewtopic.php?pid=14282#p14282

3 crash IE7 code

Demo:http://blog.gulu77.com/demo/200808/crash_ie7.html

Bug from 偷米饭,此bug只存在IE7中据估计是处理省略字的时候导致IE7崩溃.

<style type="text/css">
div{float:left;width:175px;}
ul{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
li{position:relative;}
</style>

<div>
<ul>
<li>崩溃崩溃崩溃崩溃崩溃crash ie7</li>
<li>崩溃崩溃崩溃崩溃崩溃crash ie7</li>
</ul>
</div>

解决方案:为 <li> 添加 zoom:1; 令其触发haslayout

<style type="text/css">
div{float:left;width:175px;}
ul{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
li{position:relative;zoom:1;}
</style>

4 crash IE6 code

Demo:http://blog.gulu77.com/demo/200808/crash_ie6_test1.html
当再次改变定位时浏览器崩溃,但似乎也需要N个帮凶才会导致崩溃的代码中CSS table的相属性都缺一不可。

<!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>CRASH-IE,CSS让你的IE浏览器崩溃</title>
<style type="text/css">
html, body {overflow: hidden;scrollbar-base-color: #330066;}
.crash {position:absolute;left:200px;top:200px;width:200px;}
</style>
<script type="text/javascript">
function galgenfrist() {
window.setTimeout('crashIE();',1000);
}

function crashIE() {
var moveNode = document.getElementById("move");
if(moveNode) {
moveNode.style.top = "100px";
moveNode.style.left = "200px";
}
}
</script>
</head>

<body onload="galgenfrist();">
<h1>CRASH-IE</h1>
<div id="move" class="crash">
<table>
<tbody>
<tr>
<td>
<textarea></textarea>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>

5 crash IE6 code

Demo:http://blog.gulu77.com/demo/200808/crash_ie6_test2.html
具体引起的原因暂时无法解析,但在兼容性和执行效率来看一般不会采取这样的写法。

<script>for (x in document.write) { document.write(x);}</script>

6 crash IE6 code

Demo:http://blog.gulu77.com/demo/200808/crash_ie6_test3.html
传说是一名日本人发现的,table中直接放置内容,在IE6会引起Mshtml.all模块损坏而关闭浏览器,非IE6则安全无恙。

<style>*{position:relative}</style><table><input></table>

7 crash IE6 code

Demo:http://blog.gulu77.com/demo/200808/crash_ie6_test4.html

<body onLoad=”window()”>

8 crash IE6 code

Demo:http://blog.gulu77.com/demo/200808/crash_ie6_test5.html
CSS中出现@+任意字符+/* 立即崩溃。

<style>@;/*</style>

注:4~8 from http://www.catswhocode.com/blog/6-html-and-javascript-codes-to-crash-ie6

版本:20090218

来源:http://blog.gulu77.com/?p=59