- 相关推荐
(必备)css教程
css教程1
CSS教程文本属性: 字体间距
用法:
word-spacing: 1cm;
word-spacing: 10pt;
word-spacing: 10px;
word-spacing: none;
定义:
使用这个属性我们可以定义或者设置单词之间的距离
word-spacing属性可以设置以下的值。
a)cm:以厘米为单位设置属性值,例如:1cm等...
b)px:以像素为单位设置属性值,例如:1px或者10px等...
c)pt:以点为单位设置属性值,例如:1pt或者2pt等...
d)norm:以初始值/默认值为单词间距。
示例1:
试验字间距
结果:
自己测试
示例2:
试验字间距
结果:
自己测试
示例3:
试验字间距
结果:
自己测试
示例4:
试验字间距
css教程2
滑动门(Sliding Doors)
还是决定把滑动门单独提作一种单独的技术.
它是CSS引入的.一项用来创造漂亮且实用的界面的新技术, 它使用简单, 我们只需要使用两张单独的背景图片, 就可以实现。
滑动门一般用做网站Tab导航, 根据Tab中内容的长短自动缩放Tab的效果.
CSS代码大致如下:
#header li {
float:left;
background:url("left_both.gif")no-repeat left top;
margin:0;
padding:0 0 0 9px;
border-bottom:1px solid #765;
}
#header a {
float:left;
display:block;
background:url("right_both.gif")no-repeat right top;
padding:5px 15px 4px 6px;
text-decoration:none;
font-weight:bold;
color:#765;
}
css教程3
nettuts带来的5个css书写技巧,简单翻译一下它的中心思想。
1. CSS Reset/重置
你也许需要先了解什么是css重置。然后怎么样写css重置呢。
你可以copy Eric Meyer Reset, YUI Reset或其它css reset, 但你接下来应该根据你的项目改成你自己的reset.
不要使用* { margin: 0; padding: 0; } 。我个人很爱用,原作者提到使用这句并不适用一些元素比如单选按钮。不过俺博客里面也没有单选按钮,如果有,又重新给单选按钮重设就好了嘛。
2. 按字母顺序来排列css
不按字母顺序排的
div#header h1 {
z-index: 101;
color: #000;
position: relative;
line-height: 24px;
margin-right: 48px;
border-bottom: 1px solid #dedede;
font-size: 18px;
}
按字母顺序排的
div#header h1 {
border-bottom: 1px solid #dedede;
color: #000;
font-size: 18px;
line-height: 24px;
margin-right: 48px;
position: relative;
z-index: 101;
}
理由是这样可以更好的找到某个属性。个人觉得还好,差别也不是太大。不过也许会适合你。
3. 更好的组织css结构
使用css注释来分给css分组,这样结构明了,也有利于协同设计。
/*****Reset*****/
xxxxxxx{xxxxx}
xxxxx{xxxxx}
/*****layouts*****/
xxxxxxx{xxxxx}
xxxxx{xxxxx}
4. 保持一致性
不要无意义的'去讨论到底一个选择器的所有属性写在一行,还是每个属性写一行比较好。你自己觉得ok就好。
iv#header { float: left; width: 100%; }
div#header div.column {
border-right: 1px solid #ccc;
float: rightright;
margin-right: 50px;
padding: 10px;
width: 300px;
}
div#header h1 { float: left; position: relative; width: 250px; }
比如我个人就喜欢写在一行,因为每排写一行会让整个文档感觉太长了,找起来不方便。如果你喜欢写一行,但是发给team的另一个,他却喜欢每排一行,那怎么办?其实很简单,把css拿去w3c验证,它会有一份结果,会自动转换成每排一行。
5. 先标记后css
这个我没有太看懂。大概理解是对html的标记弄好后再写css会比较不容易出错。比如我写一个页面,先写一个最基本的标记结构
!<--end footer--="">
然后就是尽量善用子选择器,而不是一要给哪个元素进行样式化,就给它添加个选择器。
css教程4
在CSS里面,每个元素盒子都可以想象成由两个图层组成。
前景层:内容(如文本或图片)和边框。
背景层:用实色填充(使用 background-color 属性),也可以包含任意多个背景图片(使用 background-image 属性),背景图片叠加在背景颜色之上。
在 CSS3 被浏览器实现之前,只能在背景颜色上添加一张图片。而现在,我们可以为背景图层添加多张图片(以及 CSS3 渐变)。
CSS背景属性:
background-color
background-image
background-repeat
background-position
background-size
background-attachment
background(简写属性)
background-clip、background-origin、background-break(目前尚未得到广泛支持)
背景颜色
格式:background-color: 颜色值;
示例:background-color: #caebff;
背景图片
格式:background-image:url(图片路径/图片文件名);
示例:background-image:url(images/blue_circle.png);
默认情况下背景图片会 以元素左上角为起点,沿水平和垂直方向重复出现,最终填满整个背景区域。
背景重复
格式:background-repeat: repeat | repeat-x | repeat-y | no-repeat;
示例:background-repeat:repeat-x;
说明:
repeat 默认值,水平和垂直方向都重复,直至填满元素的背景区域为止。
repeat-x 水平方向重复。
repeat-y 垂直方向重复。
no-repeat 任何方向上都不重复(只让背景图片显示一次)。
背景位置
用于控制背景位置的 background-position 属性,是所有背景属性中最复杂的。
该属性有5个关键字值,分别是 top、left、bottom、right 和 center,这些关键字中的任意两个组合起来都可以作为该属性的值。
background-position 属性同时设定元素和图片的原点。原点决定了元素和图片中某一点的水平和垂直坐标。默认情况下,background-position的原点位于左上角。
第一种情况,使用关键字来设定位置。background-position属性的默认值 top、left 控制着水平和垂直方向重复的起点。如修改 起点位置:p#center {background-position:center center;}(简化写法:background-position:center,设定一个关键值,则另一个也会取相同的值。),背景图片就会以段落的中心点为起点。
第二种情况,使用百分比来设定位置。
示例:background-position:50% 50%;,再把 background-repeat 设定为 no-repeat,就能实现了图片在背景区域内居中的效果。第一个值表示水平位置,第二个值表示垂直位置。要是只设定一个值,则将其用来设定水平位置,而垂直位置会被设为 center。
第三种情况,使用绝对或相对单位的数值。要是使用像素单位来设定位置,那么图片的左上角会被放在距离元素左上角指定位置的地方。另外,还可以使用负值,这样可以把图片的左上角定位到元素外部,从而在元素中只能看到部分图片。当然也可以给图片设定足够大的正值,把图片的右下角推到元素外部实现同样的效果。
背景尺寸
background-size 是 CSS3 规定的`属性,用来控制背景图片的尺寸。
可设定的值和含义如下:
50%:缩放图片,使其填充背景区的一半。
100px 50px:把图片调整到 100 像素宽,50 像素高。
cover:拉大图片,使其完全填满背景区;保持宽高比。
contain:缩放图片,使其恰好适合背景区;保持宽高比。
注意:把很小的图片拉大会导致图片质量失真。
背景粘附
background-attachment属性控制滚动元素内的背景图片是否随元素滚动而滚动。
属性值有:
scroll。背景图片随元素移动。
fixed。背景图片不会随元素滚动而移动。
提示:background-attachment:fixed 最常用于给 body 元素中心位置添加淡色水印,让水印不随页面滚动而移动。
简写背景属性
示例:body {background:url(images/watermark.png) center #fff no-repeat contain fixed;}
说明:声明中少写了哪个属性的值(比如没写 no-repeat),就会使用相应属性的默认值( repeat)。
多背景图片
CSS3 可以给元素背景添加多个背景图片。
示例:
CSS Code复制内容到剪贴板 p{ background: url(images/turq_spiral.png)30px-10pxno-repeat, url(images/pink_spiral.png)145px0pxno-repeat, url(images/gray_spiral.png)140px-30pxno-repeat,#ffbd75; }
背景渐变
渐变,就是在一定长度内两种或多种颜色之间自然的过渡。
提示:渐变是 CSS 帮我们生成的背景图片。添加渐变可以使用 background-image 属性,也可以使用简写 background 属性。
渐变分两种:
线性渐变。从元素的一端延伸到另一端。
放射性渐变。从元素内一点向四周发散。
厂商前缀
为鼓励浏览器厂商尽早采用 W3C 的 CSS3 推荐标准,于是就产生了 VSP(Vendor Specific Prefixes,厂商前缀)的概念。
示例:
transform 属性的标准语法是这样的:
transform: skewX(-45deg);
由于这个属性还没有完全定案,为保证在大多数浏览器以及它们的实验性实现中能够使用这个属性,应该针对想要支持的浏览器为该属性添加 VSP。每个浏览器只使用各自能理解的属性声明:
CSS Code复制内容到剪贴板 -moz-transform:skewX(-45deg);/*Firefox*/ -webkit-transform:skewX(-45deg);/*Chrome及Safari*/ -ms-transform:skewX(-45deg);/*微软InternetExplorer*/ -o-transform:skewX(-45deg);/*Opera*/ transform:skewX(-45deg);/*最后是W3C标准属性*/
以下 CSS3 属性必须加 VPS:
CSS Code复制内容到剪贴板 border-imagetranslate linear-gradienttransition radial-gradientbackground* transformbackground-image* transform-origin >*针对背景图片或渐变
css教程5
按照CSS规范,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联盒子(通常是文本)的排列。因此当其高度超出包含容器时,一般父容器不会自动伸长以闭合浮动元素。但是有时我们却需要这种自动闭合行为,具体如何处理呢?
有一种做法就是在父容器内再插入一个额外的标签,并令其清除浮动(clear)以撑大父容器。这种方法浏览器兼容性好,没有什么问题,缺点就是需要额外的(而且通常是无语义的)标签,所以我个人不大喜欢。
后来又有了一种新的方式,使用:after伪类动态的嵌入一个用于清除浮动的元素,这种方法和上一种原理一样,不同的只是把这个额外的内容用CSS生成,但考虑到IE不支持:after不得不做了不少的hack。这种方法兼容性一般,但经过各种hack也可以应付不同浏览器了,同时又可以保证html比较干净,所以用得还是比较多的。
再后来又有人发现将父容器的overflow设为除visible之外的`值就可以在标准兼容浏览器中闭合浮动元素,IE自然又是不支持的,所以这种方法和上一种方法一样都对IE做了不同处理(具体就是触发layout),不同的就是overflow没有:after伪类那么麻烦了,缺点也有,overflow可能会产生一些小冲突。
在使用overflow之前还有过一种使用float的方法,就是让父容器也浮动,这利用到了浮动元素的一个特性――浮动元素会闭合浮动元素。这种方式在IE/Win和标准兼容浏览器中都有较好的效果,但缺点也很明显――父容器未必想浮动就浮动的了,毕竟浮动是一种比较特殊的行为,有时布局不允许其浮动也很正常。使用float虽然在IE和标准兼容浏览器中都能闭合浮动元素,但原理却是不同的,IE/Win中float触发了layout因而闭合了浮动,而在标准兼容浏览器中,float其实和上一种方法中的overflow原理一样,产生了一个“块级格式化范围”――这是CSS规范中提到的一种现象,它往往具有某种独立性,特性之一就是会自动闭合内部的浮动元素。
按照规范,以下类型的元素会产生一个块级格式化范围:
●浮动元素,left或者right皆可。
●绝对定位的元素。
●inline-block元素,不过这个gecko目前不支持。
●table-cell类型元素,其实table,table-head-group,table-row什么的也都可以,还有inline-table(gecko不支持)也同样,因为他们都会间接产生一个匿名的table-cell。
●overflow取值非visible的元素。
所以,原来在标准兼容浏览器中我们也可以有这么多的方法闭合一个浮动元素,而且只需要CSS,无需其他。顺带说一下以上除了overflow,其余都有一个附加效果就是自动收缩父容器宽度。
而对于IE/Win,它有一套自己的体系,就是layout,具有layout的元素会自动闭合浮动元素,再来看看触发layout的CSS属性,会发现和上面的块级格式化范围有很多类似之处:
●浮动元素
●绝对定位元素
●display:inline-block
●zoom
●width/height
●overflow/overflow-x/overflow-y[IE7新增]
●max/min-width/height[IE7新增]
以上来看IE中闭合浮动元素的方法也不少,自然也都有其局限性,要么有附带效果,要么使用的是非标准属性(无法通过验证)。
还要提一点的是display:inline-block,这个属性对IE而言本身没什么用,实际效果只是给一个元素暗地添加了layout,但是标准兼容浏览器是认得这个属性的,所以要不影响这些浏览器,需要将display设回默认。这里IE有一个bug,如果先定义了display:inline-block,然后再将display设回block(这两个display要先后放在两个CSS声明中才有效果),那么layout不会消失,同时也不会影响其他浏览器,所以目前来说,这也算一个不错的触发layout的方法:
.gainlayout{display:inline-block;}
.gainlayout{display:block;}
所以要跨浏览器闭合浮动元素,可以选择的方式还是很多的,如何搭配使用这些CSS属性就要具体情况具体分析了,灵活应用条件注释也很有必要,要是实在不行我们回过头来还有clear可以用嘛。
css教程6
上下左右边框交界处呈现平滑的斜线。利用这个特点,通过设置不同的上下左右边框宽度或颜色,可以得到小三角、梯形等。
调整宽度大小可以调节三角形形状。
实现三角形
示例1:
CSS Code复制内容到剪贴板 #test1{ height:20px; width:20px; border-color:#FF9600#3366ff#12ad2a#f0ed7a; border-style:solid; border-width:20px; }
示例2:
在上面的基础上,把高度宽度都设为0时,会呈现边界斜线。
CSS Code复制内容到剪贴板 #test2{ height:0; width:0; overflow:hidden;/*这里设置overflow,font-size,line-height*/ font-size:0;/*是因为,虽然宽高度为0,但在IE6下会具有默认的*/ line-height:0;/*字体大小和行高,导致盒子呈现被撑开的长矩形*/ border-color:#FF9600#3366ff#12ad2a#f0eb7a; border-style:solid; border-width:20px; }
示例3:
示例2中可以看到有4个三角形了,如果把4种颜色,只保留一种颜色,余下3种颜色设置为透明或者与背景色相同,那就形成一个三角形。 CSS Code复制内容到剪贴板 #test3{ height:0; width:0; overflow:hidden; font-size:0; line-height:0; border-color:#FF9600transparenttransparenttransparent; border-style:solid; border-width:20px; }
示例4:
示例3中,在IE6下,需要设置余下三边的border-style为dashed,即可达到透明的效果。
CSS Code复制内容到剪贴板 #test4{ height:0; width:0; overflow:hidden; font-size:0; line-height:0; border-color:#FF9600transparenttransparenttransparent; border-style:soliddasheddasheddashed; border-width:20px; }
示例5:
上述画的小三角的斜边都是依靠原来盒子的边,还有另一种形式的小三角,斜边在盒子的.对角线上。
CSS Code复制内容到剪贴板 #test5{ height:0; width:0; overflow:hidden; font-size:0; line-height:0; border-color:#FF9600#3366fftransparenttransparent; border-style:solidsoliddasheddashed; border-width:40px40px00; }
保留其中一种颜色,就可以得到斜边在对角线上的三角形了。
实现圆角效果
可以实现近似圆角,其实是一个非常小的梯形展示出来的。
XML/HTML Code复制内容到剪贴板.test{width:200px;height:50px;} .test.top{width:194px;border-color:transparenttransparent#FF9600transparent;*border-color:pinkpink#FF9600pink;border-style:dasheddashedsoliddashed;border-width:3px;filter:chroma(color=pink);} .test.center{width:200px;height:40px;background-color:#FF9600;} .test.bottom{width:194px;height:5px;border-color:#FF9600transparenttransparenttransparent;*border-color:#FF9600pinkpinkpink;border-style:soliddasheddasheddashed;border-width:3px;filter:chroma(color=pink);}
css教程7
一、white-space
可以实现HTML中PRE标签的效果,以及单元格的noWrap效果。
语法:
white-space : normal | pre | nowrap
取值:
normal: 默认值。默认处理方式。文本自动处理换行。假如抵达容器边界内容会转到下一行
pre: 换行和其他空白字符都将受到保护。这个值需要IE6+或者 !DOCTYPE 声明为 standards-compliant mode 支持。如果 !DOCTYPE 声明没有指定为 standards-compliant mode ,此属性可以使用,但是不会发生作用。结果等同于 normal 。参阅 pre 对象
nowrap: 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。参阅 noWrap 属性
说明:
设置或检索对象内空格字符的处理方式。
空 格字符,像换行,空格,TAB,在HTML文档中默认的是被忽略的。当此属性设置为 normal 或者 nowrap 时,你可以使用不换行空格的命名实体 来添加空格,用 br 元素来添加换行。此属性对你使用文档对象模型(DOM)操作的内容的影响与其对IE显示内容的影响一样。
此属性作用于块对象。
相关样式:
text-overflow
将它与white-space结合使用就不用再写程序来判断字符串长度了,点此查看示例。
语法:
text-overflow : clip | ellipsis
取值:
clip:默认值。不显示省略标记(…),而是简单的裁切
ellipsis:当对象内文本溢出时显示省略标记(…)
说明:
设置或检索是否使用一个省略标记(…)标示对象内文本的溢出。
这个属性仅仅作用于水平内联方向的,普通的西方文本的溢出。内联溢出发生在行内的文本超出可用宽度却没有换行机会的时候。
要强制溢出发生并且应用 ellipsis 值,作者必须设置对象的 white-space 属性值为 nowrap 。
假如没有换行机会(例如,对象容器的宽度是狭窄的,而内有很长的没有合理断行的文本),没有应用 nowrap 也有可能溢出。
为了使 ellipsis 值被应用,此属性必须被设置到具有不可视区域的对象。最好的选择是设置 overflow 属性为 hidden 。设置 overflow 属性为 scroll 或者 auto 时,此属性也会应用。但是会有滚动条出现。
通过选择省略标记,隐藏的文本可以被选择。当选择发生时,省略标记会隐藏而被文本替换。
此属性为在DHTML中制作省略标记提供了高效的方法。
二、word-break
最常用的控制换行属性,常与下面的word-wrap结合使用。
语法:
word-break : normal | break-all | keep-all
取值:
normal: 默认值。允许在词间换行
break-all:该行为与亚洲语言的 normal 相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本
keep-all:与所有非亚洲语言的 normal 相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本
说明:
设置或检索对象内文本的字内换行行为。尤其在出现多种语言时。
对于中文,应该使用 break-all 。
三、word-wrap
如果你设计的网页不是自适应宽度的话,需要将它设置为break-word,否则可能出现版快错开的情况。
语法:
word-wrap : normal | break-word
取值:
normal:默认值。允许内容顶开指定的容器边界
break-word:内容将在边界内换行。如果需要,词内换行( word-break )也将发生
说明:
设置或检索当当前行超过指定容器的`边界时是否断开转行。
此属性仅作用于有布局的对象,如块对象。内联要素要使用该属性,必须先设定对象的 height 或 width 属性,或者设定 position 属性为 absolute ,或者设定 display 属性为 block 。
四、overflow,overflow-x,overflow-y
这个不是严格意思上的控制换行样式,但在某些时候将它设置为hidden可以补充word-wrap的不足,比方你想在限制宽度里仅显示一行文字,而这行文 字的长度却超过这个宽度,结合white-space+text-overflow可以达到更好的效果。
语法:
overflow : visible | auto | hidden | scroll
取值:
visible: 默认值。不剪切内容也不添加滚动条。假如显式声明此默认值,对象将以包含对象的 window 或 frame 的尺寸裁切。并且 clip 属性设置将失效
auto:在必需时对象内容才会被裁切或显示滚动条
hidden:不显示超过对象尺寸的内容
scroll:总是显示滚动条
说明:
检索或设置当对象的内容超过其指定高度及宽度时如何管理内容。
所有对象的默认值是 visible ,除了 textarea 对象和 body 对象的默认值是 auto 。设置 textarea 对象此属性值为 hidden 将隐藏其滚动条。
对于 table 来说,假如 table-layout 属性设置为 fixed ,则 td 对象支持带有默认值为 hidden 的 overflow 属性。如果设为 scroll 或者 auto ,那么超出 td 尺寸的内容将被剪切。如果设为 visible ,将导致额外的文本溢出到右边或左边(视 direction 属性设置而定)的单元格。
自IE5开始,此属性在MAC平台上可用。
自IE6开始,当你使用 !DOCTYPE 声明指定了 standards-compliant 模式,此属性可以应用于 html 对象。
css教程8
CSS为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务。
定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。显然,这个功能非常强大,也很让人吃惊。要知道,用户代理对CSS2中定位的支持远胜于对其它方面的支持,对此不应感到奇怪。
另一方面,CSS1中首次提出了浮动,它以Netscape在Web发展初期增加的一个功能为基础。浮动不完全是定位,不过,它当然也不是正常流布局。我们会在后面的章节中明确浮动的含义。
一切皆为框
div、h1或p元素常常被称为块级元素。这意味着这些元素显示为一块内容,即“块框”。与之相反,span和strong等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”。
您可以使用display属性改变生成的框的类型。这意味着,通过将display属性设置为block,可以让行内元素(比如元素)表现得像块级元素一样。还可以通过把display设置为none,让生成的元素根本没有框。这样的`话,该框及其所有内容就不再显示,不占用文档中的空间。
但是在一种情况下,即使没有进行显式定义,也会创建块级元素。这种情况发生在把一些文本添加到一个块级元素(比如div)的开头。即使没有把这些文本定义为段落,它也会被当作段落对待:
sometext
Somemoretext.
在这种情况下,这个框称为无名块框,因为它不与专门定义的元素相关联。
块级元素的文本行也会发生类似的情况。假设有一个包含三行文本的段落。每行文本形成一个无名框。无法直接对无名块或行框应用样式,因为没有可以应用样式的地方(注意,行框和行内框是两个概念)。但是,这有助于理解在屏幕上看到的所有东西都形成某种框。
CSS定位机制
CSS有三种基本的定位机制:普通流、浮动和绝对定位。
除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在X(HTML)中的位置决定。
块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。
行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为行框(LineBox),行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。
在下面,我们会为您详细讲解相对定位、绝对定位和浮动。
CSSposition属性
通过使用position属性,我们可以选择4中不同类型的定位,这会影响元素框生成的方式。
position属性值的含义:
static
元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。
relative
元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。
absolute
元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
fixed
元素框的表现类似于将position设置为absolute,不过其包含块是视窗本身。
提示:相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。
CSS定位属性
CSS定位属性允许你对元素进行定位。
属性描述
position把元素放置到一个静态的、相对的、绝对的、或固定的位置中。
top定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。
right定义了定位元素右外边距边界与其包含块右边界之间的偏移。
bottom定义了定位元素下外边距边界与其包含块下边界之间的偏移。
left定义了定位元素左外边距边界与其包含块左边界之间的偏移。
overflow设置当元素的内容溢出其区域时发生的事情。
clip设置元素的形状。元素被剪入这个形状之中,然后显示出来。
vertical-align设置元素的垂直对齐方式。
z-index设置元素的堆叠顺序。
css教程9
一般说来如果某个子元素使用了浮动(float),那父元素总是不能确切地知道子元素是在什么位置结束的,所以父元素的下边框总是从子元素的中间甚至是顶部穿过,看起来很不舒服。
最近两个月断断续续做了好几个网站的美工,做的`过程中对DIV Css的标准开发有了进一步的了解。有两点收获最大,一是彻底弄懂了CSS的盒子模式(Box Model),再一个就是搞定了困扰我很久的“闭合浮动元素”的问题:
一般说来如果某个子元素使用了浮动(float),那父元素总是不能确切地知道子元素是在什么位置结束的,所以父元素的下边框总是从子元素的中间甚至是顶部穿过,看起来很不舒服。
最早时我都是在子元素结束后单独加个
或
将其属性设置为“clear:all;”,但这样一来就需要生成不少没用的空标签,甚至有些网站需要修改ASP代码以自动添加这些空标签,只能算是下策。
后来发现当父标签也设置为浮动(float)时就可以在正确的位置闭合了,所以就把父容易也浮动起来,这样一来很多ASP代码就不需要改了,遇到需要添加含Clear属性的空标签时如果不能从模板中添加,而需要从ASP代码中添加时,就不需要改ASP代码了,只需要把父容器设为浮动,如果还需要改ASP,那就再把父容器的父容器设为浮动,一层层地浮动上去,总能解决问题的。这虽然能省不少事,但很容易造成整个页面中全是浮动元素,-_-!!!也只能算是中策而已。
再后来,在网上搜索别的东西时偶然发现有人说只要在父容器的CSS属性中加上以下两个属性就可以搞定了:
overflow: auto;
_height: 1%;
试了一下,果然好用,这么一来,这在目前应该算是解决这一问题的上策了:不需要对页面做任务修改,也基本上不需要对父容器--甚至是父容器的父容器做什么改动,只给父容器添加两个无所谓的属性就搞定了。
css教程10
有些习惯显得尤为重要,今天与您分享六个CSS习惯。因为习惯其实是会变的,所以只能写“最近”的。这些习惯都跟技术无关,如果不遵守,也不会出错。但是我觉得良好的习惯会体现一个人的素质。 我们在中向大家介绍过很多CSS经验与技巧,这些东西都发布在/css/的文章中,相信对大家是有一些帮助与启发的。有些习惯显得尤为重要,今天与您分享六个CSS习惯。因为习惯其实是会变的,所以只能写“最近”的。这些习惯都跟技术无关,如果不遵守,也不会出错。但是我觉得良好的习惯会体现一个人的素质。
一、用class_name方式写类名。
以前喜欢用class-name写,不过好像两样也没什么差别。但我比较反对用className写类名,因为始终对浏览器大小写敏感的问题抱有怀疑态度。但是id我会写成驼峰式,理由见下一条。
二、样式都用class而不用id。
有三个理由,一,id不可以重复,所以用class的话,可以肆无忌惮的用无数次。二,id的优先级太高,若是写了一个#page_contenta{color:#f60},那你完蛋了,里面要改链接颜色,都必须加上#page_content才能越过这个优先级。三,id专门留给JS用,这样才符合表现与行为分离的原则。所以id我用驼峰式,也是为了体现这一点。
三、margin和padding,尽量省略最后一个值。
比如margin:20px10px5px10px;,左右值是一样的,就应该省略掉最后一个值,写成margin:20px10px5px;这样到时候要改左右间距,改一个就好,免得改漏了。其实这个问题虽然很细小,但是可以看得出对margin四个值省略规则的熟练程度。
四、按标准写CSS,再针对特定浏览器作hack。
比如,通常我们会遇到如下的写法:
.side_col{
float:left;
display:inline;
margin-left:20px;
}
而我的写法会是:
.side_col{
float:left;
margin-left:20px;
}
*.side_col{
_display:inline;/*hackedforIE6*/
}
看明白了么?不应该把hack混在一起,也不应该用一种侥幸的心态,觉得float:left与display:inline写在一起没事。嗯,它们俩确实没事儿,但是其他的hack就不一定了。而且这里写display:inline纯粹就是为了解决IE6的bug,所以前面加上下划线,以明确的表达你的目的。
另外不要以为凡是hack都是为IE准备的。其实有些hack是针对其他浏览器的,比如FF。这就要求你对CSS标准的熟练掌握,能够自信的判断哪些渲染是遵守标准,哪些违反标准的'。
此外,我喜欢在hack前面加上星号,其实这纯粹是个人习惯了。可能过段时间我就不这么用了,呵呵。
五、记得加空格。
.class_name{property:value;}。我个人觉得合理的空格是优秀代码的一个指标。按英文的习惯,标点后面都应该带空格(如果你写Thisisapen.That’sapencil.句点后面不加空格,word里面会有错误提示)。所以既然CSS是外国人发明的,应该按他们的格式来写。类似的,在JS里vara=b c;里面的空格也应该都要加。
六、适当的层叠(Cascading)或缩进以定义CSS的“作用域”。
啥叫“CSS的作用域”?其实并不是所有的样式都在所有的地方使用。有的样式只用在某一块里面,比如“导航栏”里的“搜索框”,可能应该写成:
.nav.search{}
而有时候用层叠会增加代码优先级,所以也可以用缩进来“象征性的”体现作用域。像这样:
.login_box{}
.forgot_pwd{}
缩进,是为了表示它们对应的标签具有父子关系。但这样只能起一个提醒的作用。
CSS技巧在于不断的总结与对编码的理解,任何时候都是在不断的完善的,有何经验欢迎您来52CSS.com与我分享,也可以在W3Cbbs.com发贴,写出您对CSS的心得体会。
css教程11
一般而言,CSS类名的语义化声明方式应当考虑你的页面中某个相对元素的”用意”,独立于它的”定位”或确切的特性(结构化方式)。像left-bar, red-text, small-title…这些都属于结构化定义的例子。
让我们看看下面这个例子:
…而现在我们想把页面中的元素调换一下位置,如果你使用的是结构化方式(1),那么你就要把所有CSS类名重新进行定义,因为它们的位置变了。在布局(3)中,我们看到元素都倒转了:right-bar 现在成了 “left-bar”,而left-content 成了 “right-content”。如果你使用语义化方式则避免了此类问题。
换句话说,使用语义化方式的话,你在修改网站布局的时候可以仅仅修改相关CSS类的属性即可,而不用修改它们的类名了,如果网站的代码很庞大,这将节省大量的时间。
教程网会经常更新前端开发/网页设计等相关技术及教程文章,欢迎及时浏览教程网的最新教程及资源。关于语义化的一些建议:
在开始之前,我想推荐两种简单的编写较好的CSS代码的指导方针: 为CSS类名定义的时候,尽量使用小写字母,如果有两个以上的'单词,在每个单词之间使用”-”符或单词首字母大写(第一个单词除外)。如:”main-content”或”mainContent”。 优化CSS代码,仅创建关键主要的CSS类并重新为子元素使用符合HTML标准的标签(h1, h2, p, ul, li, blockquote,…),例如,不要使用这种哦你那个方式:
而要这样写:
…
…
三栏布局中使用语义化方式的例子
让我们来通过这个简单的例子讲解一下如何为经典的三栏布局使用语义化方式命名:
使用语义化方式为CSS命名可以像这样:
#container{…}
/*—- Top section —-*/
#header{…}
#navbar{…}
/*—- Main —-*/
#menu{…}
#main{…}
#sidebar{…}
/*—- Footer —-*/
#footer{…} Container
“#container“就是将你页面中的所有元素包在一起的部分,这部分你还可以命名为:“wrapper“, “wrap“, “page“. Header
“#header”是网站页面的头部区域,一般来讲,它包含网站的logo和一些其他元素。这部分你还可以命名为:”top“, “logo“, “page-header” (或 pageHeader). Navbar
“#navbar“等同于横向的导航栏,是最典型的网页元素。这部分你还可以命名为:“nav”,“navigation”,“nav-wrapper”. Menu
“#Menu”区域包含一般的链接和菜单,这部分你还可以命名为:“sub-nav“, “links“. Main
“#Main”是网站的主要区域,如果是博客的话它将包含你的日志。这部分你还可以命名为:“content“, “main-content” (or “mainContent”)。 Sidebar
“#Sidebar”部分可以包含网站的次要内容,比如最近更新内容列表、关于网站的介绍或广告元素等…这部分你还可以命名为:“sub-nav“, “side-panel“, “secondary-content“. Footer
“#Footer”包含网站的一些附加信息,这部分你还可以命名为:“copyright“.
css教程12
(1)页面结构类
容器: container
页头:header
内容:content/container
页面主体:main
页尾:footer
导航:nav
侧栏:sidebar
栏目:column
页面外围控制整体布局宽度:wrapper
(2)导航类
导航:nav
主导航:mainnav
子导航:subnav
顶导航:topnav
边导航:sidebar
左导航:leftsidebar
右导航:rightsidebar
位置导航: crumb
菜单:menu
子菜单:submenu
面包屑:breadcrumb(即页面所处位置导航提示)
(3)网页内容类
标题: title
摘要: summary
箭头: arrow
商标: label
网站标志: logo
转角/圆角: corner
横幅广告: banner
栏目: column
子菜单: subMenu
搜索: search
搜索框: searchBox
登录: login
工具条: toolbar
下拉: drop
标签页: tab
当前的: current
列表: list
滚动: scroll
服务: service
提示信息: msg
新闻: news
小技巧: tips
下载: download
栏目标题: title
热点: hot
加入: joinus
注册: regsiter
指南: guide
友情链接: friendlink
状态: status
版权: copyright
按钮: btn
合作伙伴: partner
投票: vote
css教程13
上节课我们讲了一下CSS通过什么方式去控制页面,如果不记得,我来帮大家回忆一下,总共有四种方式行内方式、内嵌方式、链接方式、导入方式,大家通过这四种方式就可以实现CSS对HTML页面样式的控制,如果要让这些样式对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器,HTML页面中的元素就是通过CSS选择器进行控制的。
CSS选择器共有三种:标签选择器、ID选择器、类选择器。
为了后面的对选择器的解释更容易理解,在这里先打个比喻,如果把你所处的环境视为HTML页面的话,环境里的每一个人则相当于HTML页面内标签元素,每个人都有一个ID(身份证),那么html中的每一个标签也都有自己的ID,大家都知道ID是唯一的,不可能重复。
【标签选择器】
一个完整的HTML页面是有很多不同的标签组成,而标签选择器,则是决定哪些标签采用相应的CSS样式,(在大环境中你可能出于不同的位置,但是不管怎么样,你总是穿着同一套衣服,这件衣服就是由标签选择器事先给你限定好的,不管走到哪里都是这身衣服)比如,在style.css文件中对p标签样式的声明如下:
p{
font-size:12px;
background:#900;
color:090;
}
则页面中所有p标签的背景都是#900(红色),文字大小均是12px,颜色为#090(绿色),这在后期维护中,如果想改变整个网站中p标签背景的颜色,只需要修改background属性就可以了,就这么容易!
【ID选择器】
ID选择器在某一个HTML页面中只能使用一次(当然也可以用好几次,不过就不符合W3C标准了,那页面也就不是标准页面喽~,咱们的目的不就是为了做标准的页面么,所以建议大家不要在同一个html页面中多个标签拥有共同的ID),就像在你所处的环境中,你只有一个ID(身份证),不可能重复!相信大家也能看出来,ID选择器更具有针对性,如:
先给某个HTML页面中的某个p标签起个ID,代码如下:
此处为p标签内的文字
在CSS中定义ID为one的p标签的属性,就需要用到#,代码如下:
#one{
font-size:12px;
background:#900;
color:090;
}
这样页面中的某个p就会是CSS中定义的样式。
【类选择器】
这种选择器更容易理解了,就是使页面中的某些标签(可以是不同的标签)具有相同的样式,就像国庆中某个方阵中,肯定都是不同的人,却均穿红色衣服,手中高举花环,样式都是一样的,如果想让这一类人都有共同的样式,该怎么做呢~呵呵,和ID选择器的用法类似,只不过把id换做class,如下:
此处为p标签内的文字
如果我还想让div标签也有相同的样式,怎么办呢?加上同样的class就可以了,如下
此处为p标签内的文字
这样页面中凡是加上class="one"的标签,样式都是一样的喽~CSS定义的时候和ID选择器差不多,只不过把#换成.,如下
.one{
font-size:12px;
background:#900;
color:090;
}
补充:一个标签可以有多个类选择器的值,不同的值用空格分开,如:
此处为p标签内的文字
这样我们可以将多个样式用到同一个标签中,当然也可以,ID和class一块用
此处为p标签内的文字
【通用选择器】
到这里,前三种基本的选择器说完了,但是还需要给大家介绍一个CSS选择器中功能最强大但是用的最少的一种选择器“通用选择器”
*{此处为CSS代码}
强大之处是因为他对父级中的所有HTML标签进行样式定义,可对具有共同样式的标签样式进行定义(有点小学数学中的提取公因式),这样可以大大精简代码;既然有这么强大的功能为什么是用的最少呢,同样还是因为他的强大,他是对父级元素内的所有标签进行定义,所以只要你定义了,那么父级里面的所有的标签,甭管有没有必要,也都相当于加上了通用选择器里面的代码了,能这么说大家不能够完全理解,没关系,我给大家举个例子,请看下面
这里是p标签区域
这里是a标签区域
这里是p标签区域
这里是a标签区域
大家运行一下上面的例子,div1里面的两个标签是不是样式一样,这就是通用选择器的强大之处,不管里面有多少个标签都会将样式加到所有标签内,如果div1里面得所有的标签都有一部分相同的CSS代码,那么可以把这部分代码提取出来,用通用选择器来定义,这样可以大大缩减代码,但是如果div1里面只要有一个和其他元素没有相同的代码,就不能用通用选择器来定义,这也就是CSS通用选择器不灵活的一点。现在大家明白为什么通用选择器是选择器里面功能最强大的但又是用的最少的选择器了吧~~呵呵
对于通用选择器还有一个不得不提的用法,就是为了保证作出的.页面能够兼容多种浏览器,所以要对HTML内的所有的标签进行重置,会将下面的代码加到CSS文件的最顶端
*{margin:0; padding:0;}
为什么要这么用呢,因为每种浏览器都自带有CSS文件,如果一个页面在浏览器加载页面后,发现没有CSS文件,那么浏览器就会自动调用它本身自带的CSS文件,但是不同的浏览器自带的CSS文件又都不一样,对不同标签定义的样式不一样,如果我们想让做出的页面能够在不同的浏览器显示出来的效果都是一样的,那么我们就需要对对HTML标签重置,就是上面的代码了,但是这样也有不好的地方,因为HTML4.01中有89个标签,所以相当于在页面加载CSS的时候,先对这89个标签都加上了{margin:0; padding:0;},在这里我不建议大家这么做,因为89个标签中需要重置的标签是很少数,没有必要将所有的标签都重置,需要哪些标签重置就让哪些标签重置就可以了,如下
body,div,p,a,ul,li{margin:0; padding:0;}
如果还需要dl、dt、dd标签重置,那就在上面加上就可以了,如下
body,div,p,a,ul,li,dl,dt,dd{margin:0; padding:0;}
用到那些就写那些,这点也可以看做衡量页面重构师制作页面水平的高低,以及是否专业的一个方面到这里大家更应该明白这句话“通用选择器是功能最强大但是用的最少的选择器”了吧~^_^
OK!选择器的内容我向大家应该都明白了,后面就继续讲解一下“选择器的集体声
明”和“选择器的嵌套”
【选择器的集体声明】
在我们使用选择器的时候,有些标签样式是一样的,或者某些标签都有共同的样式属性,我们可以将这些标签集体声明,不同的标签用“,”分开,比如:
h1,h2,h3,h4,h5,h6{color:#900;}
#one,#three,.yellow{font-size:14px;}
#one{background:#ccc;}
#three{background:#ccc;}
.yellow{background:#ccc;}
和小学的提取公因式差不多,把共同的部分提取出来,这么做的好处,相同的部分共同定义,不同的部分单独定义,保证风格统一,样式修改灵活,这也是优化CSS代码的一块,要记住哟~
【选择器的嵌套】
选择器也是可以嵌套的,如:
#div1 p a{color:#900;}/*意思是在ID为div1
内的p标签内的链接a标签的文字颜色为红色*/
这样的好处就是不需要在单独的为ID为div1的标签内的p标签内的a标签单独定义class选择器或者ID选择器,CSS代码不就少了嘛~同样也是CSS代码优化的一块。
到这里,基本的选择器说完了,但是还需要给大家介绍一个“通用选择器”
*{此处为CSS代码}
好,这节课主要讲解了三种CSS代码选择器、选择器的声明、选择器的嵌套三块知识,要掌握好,如果有不懂,可以留言。