CSS无难事-常用CSS hack写法和页面布局规范
写css hack,一般地是为了让页面模块在不同的浏览器下达到兼容显示的效果。如果你经常写Hack,说明你的html布局或者div书写有出现不合理的地方。与其一堆hack,你有必要看看你的html结构是否合理了哦。关于这三角恋的关系,如下图:
有时候也在所难免,类似于美莱氏其中的一个布局:
我们看这种瀑布流式的布局,模块之间存在边距,模块内也存在边距,div的布局设置,要从细微的地方考虑,就像搭棚架一样,好的基础,才能搭得高。这个页面小弟还无优化它,之前开源系统的前端写得一般。要知道搜索引起对页面的抓取,也是讲究div层布局是否合理的,好的层次结构有利于seo。
我们以margin-left为例,其他css属性是一样道理的。
.melace{
margin-left:10px; //让火狐,opera,chrome等firefox家族执行
margin-left:8px\9; //让ie6,ie7,ie8,ie9 执行,其他非ie家族不执行
*margin-left:5px; // 让ie6,ie7 执行;ie8, ie9不执行
_margin-left:3px; // 让ie6执行
}
1. 来分析一下,margin-left:10px; 本来ie家族也会执行,但是后边的声明会将其覆盖,就是说,像java一样,如果后边没有声明覆盖,那么ie家族会执行这个参数,现在后边的声明,就覆盖了这个参数,导致的结果是只有火狐家族执行margin-left:10px; 区分了两个阵型的浏览器识别。
2. margin-left:8px\9; 这个声明ie家族能识别,火狐家族不识别。就是用来覆盖
“ margin-left:10px; ”的。
3. *margin-left:5px; 用” * “ 星号声明,ie6和ie7执行这个参数,ie8和ie9不执行,导致的结果是:ie8和ie9 执行了margin-left:8px 。这样便将ie6、ie7 和ie8、ie9区分了。
4. _margin-left:3px; 只有ie6执行,这样便区分了ie6和ie7内核的浏览器了。
总结:这是典型的css hack 写法,目的是针对引用.melace这个伪类的div,在不同浏览器下边执行不同的参数值。一般点将,如果你经常写css hack,你应该去考虑一下html页面的结构是否合理,考虑一下是否应该要重构。如果你的html结构规范,div书写也比较规范,一般写css hack的机会就减小很多了,这样节约了维护成本。那么就涉及你的div展现层,html 结构层是否规范了,新手一般只求功能实现,很多情况下抱着能实现就好,或者赶进度给客户看,往往忽略了这两个层次的规范问题。当你写多了,就应该回头看看是否规范哦。
人一旦习惯了某些东西就很难去改,以及各种各样的原因,新的浏览器越来越多,而老的总淘汰不了。增长总是快于消亡导致了浏览器兼容是成了谈不完的话题。说到浏览器兼容,CSS HACK自然而然地被我们想起。今天,我们通常都有一个团队或者将有一个团队的人在一个公司里面做相同的事,需要我们有统一的规范来进行Coding,以方便维护。而解决兼
容的方法就是(必须是,因为这才最容易有问题的)其中一个最重要的、要解决的规范之一。
看看常见的CSS hack写法:
.soFun{
padding:10px; /* FF CH OP*/
[padding:10px; padding:8px];/* SF, CH (值取后者)*/
padding:9px\9; /* all ie */
padding:8px\0; /* ie8-9 */
*padding:5px; /* ie6-7 */
+padding:7px; /* ie7 */
_padding:6px; /* ie6 */
}
要注意上面中括号的写法,要写在“padding:10px; /* FF CH OP*/”的后面哦,否则苹果和google浏览器不起作用。
经济实惠型写法:
.sofish{
padding:10px;
[padding:10px; padding:8px]; /* SF, CH (值取后者)*/
padding:9px\9; /* all ie */
padding:8px\0; /* ie8-9 目前应用于IE8的单独hack,情况比较少*/
*padding:5px; /* ie6-7 */
+padding:7px; /* ie7 */
_padding:6px; /* ie6 */
}
/* webkit and opera */
@media all and (min-width: 0px){ .sofish{padding:11px;} }
/* webkit */
@media screen and (-webkit-min-device-pixel-ratio:0){ .sofish{padding:11px;} }
/* opera */
@media all and (-webkit-min-device-pixel-ratio:10000), not all and
(-webkit-min-device-pixel-ratio:0) { .sofish{padding:11px;} }
/* all firefox * /
@-moz-document url-prefix(){ .sofish{padding:11px;}}
/* newest firefox */
html>/**/body .sofish, x:-moz-any-link, x:default { padding:11px; }
Jquery判断浏览器为ie6
// 以jQuery为例,检测是否是IE6,是则加上class="ie6"
if ($.browser.msie && $.browser.version = 6 ){
$('div').addClass('ie6');
}
全面的IE6+ / Firefox / Webkit / Opera CSS HACK列表
写法注释
html .soFun { color: red }IE6 and below
*:first-child+html .soFun { color: red } IE7
html>body .soFun { color: red }IE7, FF, Saf, Opera
IE8, FF, Saf, Opera
html>/**/body .soFun { color: red }
(Everything but IE 6,7)
Opera 9.27 and below, safari html:first-child .soFun { color: red }
2
html[xmlns*=""] body:last-child .soFun { color: red } Safari 2-3
safari 3+, chrome 1+, body:nth-of-type(1) .soFun{ color: red }
opera9+, ff 3.5+
safari 3+, chrome 1+, body:first-of-type .soFun { color: red }
opera9+, ff 3.5+
全面的IE6+ / Firefox / Webkit / Opera CSS HACK列表
写法注释
@media screen and (-webkit-min-device-pixel-ratio:0) { .soFun
saf3+, chrome1+
{ color: red } }
@media screen and (max-device-width: 480px) { #veintiseis
iPhone / mobile webkit { color: red } }
html[xmlns*=""]:root #trece { color: red } Safari 2 - 3.1
|html[xmlns*=""] #catorce { color: red } Safari 2 - 3.1, Opera 9.25 root *> #quince { color: red }Everything but IE6-8
*+html #dieciocho { color: red } IE7
#veinticuatro, x:-moz-any-link { color: red } Firefox only. 1+
#veinticinco, x:-moz-any-link, x:default { color: red }Firefox 3.0+ *
#once { _color: blue } IE6
#doce { *color: blue; /* or #color: blue */ } IE6, IE7
#diecisiete { color/**/: blue } Everything but IE6
#diecinueve { color: blue\9; } IE6, IE7, IE8, IE9
#veinte { color/*\**/: blue\9; } IE7, IE8
IE6, IE7(ie6,7可以这样识#veintesiete { color: blue !ie; }
别)
!important;请勿随便使用这个标签, 因为不同的写法和环境, 现代非ie6的浏览器也是支持这个写法的, 不要轻信网上的说法. 这个标签在碰到ie6特有的某些环境下使用才比较划算. 在国内前端开发中,我们始终记住一点,那就不要单独为了表现而去写css及设计,而是要为数据和内容去css和design!最好这个东西还是作用在最小区域哦,否则会有莫名其妙的问题,比如ie6下的字体颜色没有用上,你可以在之后加一下这个东西哦。
转载请注明:智容中国https://www.360docs.net/doc/207299048.html, By JohnKong
CSS+DIV布局案例
第一个例子只是告诉大家如何让页面居中,这个代码的用处一般用来做背景图,示例:http://www.smarter.co.jp/,外围是灰色的,当中页面的正文底是白色的,非常大气。这个例子主要讲上下两列,这是最常见的,也是最简单的页面表现形式,头部放logo和banner,下面是主体内容。 CSS代码如下: body { font-family:Verdana; font-size:14px; margin:0;background:#E9E9E9;} #container {margin:0 auto; width:900px;background:#FFFFFF;padding:15px;} #header { height:100px; background:#6cf; margin-bottom:5px;} #mainContent { height:300px; background:#cff;} 页面代码如下:
DIV+CSS:网站首页布局实例教程
DIV+CSS:网站首页布局实例教程 第一步:页面布局与规划 在网页制作中,有许多的术语,例如:CSS、HTML、DHTML、XHTML等等。在下面的文章中我们将会用到一些有关于HTML的基本知识,而在你学习这篇入门教程之前,请确定你已经具有了一定的HTML基础。下面我们就开始一步一步使用DIV+CSS进行网页布局设计吧。所有的设计第一步就是构思,构思好了,一般来说还需要用PhotoShop或FireWorks(以下简称PS或FW)等图片处理软件将需要制作的界面布局简单的构画出来,以下是我构思好的界面布局图。 下面,我们需要根据构思图来规划一下页面的布局,仔细分析一下该图,我们不难发现,图片大致分为以下几个部分: 1、顶部部分,其中又包括了LOGO、MENU和一幅Banner图片; 2、内容部分又可分为侧边栏、主体内容; 3、底部,包括一些版权信息。 有了以上的分析,我们就可以很容易的布局了,我们设计层如下图:
根据上图,我再画了一个实际的页面布局图,说明一下层的嵌套关系,这样理解起来就会更简单了。 DIV结构如下: │body {}/*这是一个HTML元素,具体我就不说明了*/ └#Container {}/*页面层容器*/
├#Header {}/*页面头部*/ ├#PageBody {}/*页面主体*/ │├#Sidebar {}/*侧边栏*/ │└#MainBody {}/*主体内容*/ └#Footer {}/*页面底部*/ 至此,页面布局与规划已经完成,接下来我们要做的就是开始书写HTML代码和CSS。 第二步:写入整体层结构和CSS 接下来我们在桌面新建一个文件夹,命名为“DIV+CSS布局练习”,在文件夹下新建两个空的记事本文档,输入以下内容:
CSS 定位详解
CSS 定位 CSS 定位(Positioning) 属性允许你对元素进行定位。 CSS 定位和浮动 CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务。 定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。显然,这个功能非常强大,也很让人吃惊。要知道,用户代理对CSS2 中定位的支持远胜于对其它方面的支持,对此不应感到奇怪。 另一方面,CSS1 中首次提出了浮动,它以Netscape 在Web 发展初期增加的一个功能为基础。浮动不完全是定位,不过,它当然也不是正常流布局。我们会在后面的章节中明确浮动的含义。 一切皆为框 div、h1 或p 元素常常被称为块级元素。这意味着这些元素显示为一块内容,即“块框”。与之相反,span 和strong 等元素称为“行内元素”,这是因为它们的内容显示
在行中,即“行内框”。 您可以使用display 属性改变生成的框的类型。这意味着,通过将display 属性设置为block,可以让行内元素(比如 元素)表现得像块级元素一样。还可以通过把display 设置为none,让生成的元素根本没有框。这样的话,该框及其所有内容就不再显示,不占用文档中的空间。 但是在一种情况下,即使没有进行显式定义,也会创建块级元素。这种情况发生在把一些文本添加到一个块级元素(比如div)的开头。即使没有把这些文本定义为段落,它也会被当作段落对待:
DIV+CSS网页布局技巧实例
DIV+CSS网页布局技巧实例1:设置网页整体居中的代码
DIV+CSS网页布局技巧实例4:使用css缩写 使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。css缩写的主要规则请参看《常用css缩写语法总结》,css缩写的主要规则如下: 颜色 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如: #000000可以缩写为#000;#336699可以缩写为#369; 注意:在同一个CSS配置节中,不要交错使用全写和缩写的颜色配置,在系统资源极低时,会导致浏览器渲染失败。 盒尺寸 通常有下面四种书写方法: ?property:value1; 表示所有边都是一个值value1; ?property:value1 value2; 表示top和bottom的值是value1,right和left的值是value2 ?property:value1 value2 value3; 表示top的值是value1,right和left的值是value2,bottom的值是value3 ?property:value1 value2 value3 value4; 四个值依次表示top,right,bottom, left 方便的记忆方法是顺时针,上右下左。具体应用在margin和padding的例子如下:margin:1em 0 2em 0.5em;
边框(border) 边框的属性如下: ?border-width:1px; ?border-style:solid; ?border-color:#000; 可以缩写为一句:border:1px solid #000; 语法是border:width style color; 背景(Backgrounds) 背景的属性如下: ?background-color:#f00; ?background-image:url(background.gif); ?background-repeat:no-repeat; ?background-attachment:fixed; ?background-position:0 0; 可以缩写为一句:background:#f00 url(background.gif) no-repeat fixed 0 0; 语法是background:color image repeat attachment position; 你可以省略其中一个或多个属性值,如果省略,该属性值将用浏览器默认值,默认值为:?color: transparent ?image: none
网页设计基础Div+CSS布局入门教程
网页设计基础:Div+CSS布局入门教程 在网页制作中,有许多的术语,例如:CSS、HTML、DHTML、XHTML等等。在下面的文章中我们将会用到一些有关于HTML的基本知识,而在你学习这篇入门教程之前,请确定你已经具有了一定的HTML 基础。下面我们就开始一步一步使用DIV+CSS进行网页布局设计吧。 所有的设计第一步就是构思,构思好了,一般来说还需要用PhotoShop或FireWorks(以下简称PS或FW)等图片处理软件将需要制作的界面布局简单的构画出来,以下是我构思好的界面布局图。 下面,我们需要根据构思图来规划一下页面的布局,仔细分析一下该图,我们不难发现,图片大致分为以下几个部分: 1、顶部部分,其中又包括了LOGO、MENU和一幅Banner图片; 2、内容部分又可分为侧边栏、主体内容; 3、底部,包括一些版权信息。 有了以上的分析,我们就可以很容易的布局了,我们设计层如下图:
根据上图,我再画了一个实际的页面布局图,说明一下层的嵌套关系,这样理解起来就会更简单了。 以下为引用的内容: DIV结构如下: │body {}/*这是一个HTML元素,具体我就不说明了*/ └#Container {}/*页面层容器*/ ├#Header {}/*页面头部*/ ├#PageBody {}/*页面主体*/
│├#Sidebar {}/*侧边栏*/ │└#MainBody {}/*主体内容*/ └#Footer {}/*页面底部*/ 至此,页面布局与规划已经完成,接下来我们要做的就是开始书写HTML代码和CSS。 接下来我们在桌面新建一个文件夹,命名为“DIV+CS S布局练习”,在文件夹下新建两个空的记事本文档,输入以下内容: 以下为引用的内容:
DIV+CSS布局:CSS浮动float属性详解
DIV CSS布局:CSS浮动float属性详解 在传统的表格布局中,我们对表格应该对齐方式对实现了对布局的应用,而应用Web标准构建网页以后,float浮动属性是布局中非常重要的属性,我们常常通过对div元素应用float浮动来进行布局,不但对整个版式进行规划,也可以对一些基本元素如导航等进行排列。 我们来看看float属性基本释义: 该属性的值指出了对象是否及如何浮动。当该属性不等于none引起对象浮动时,对象将被视作块对象(block-level),即display属性等于block。也就是说,浮动对象的display特性将被忽略。 float属性的参数: none:对象不浮动 left:对象浮在左边 right:对象浮在右边 下面我们通过一些测试来了解可能出现的一些情况,如果float取值为none则不会发生任何浮动,块元素独占一行,紧随其后的块元素将在新行中显示,如下图: 我们看下面的运行效果: Source Code to Run