H5学习之16 CSS
2016-08-01 22:33
387 查看
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <link href="css.css" rel="stylesheet" type="text/css"/> <!--文件的引入--> </head> <body> 直接规定标签样式 body<!--直接规定系统标签里的样式, 一个所有选择通用的准则: 物理位置上的外侧的设置样式之后,如果内侧还有单独设置样式,则以内部为准。内部覆盖外部 存在物理上的包含关系时,内涵方面的上下级就不再看了。并列的话就看。 还有一种情况,如果二者不存在物理上的包并关系,他们是并列的。 也就是从内涵方面来看. 我规定了 div标签的样式 , 然后我又设置 div标签 class为div1 的样式,这样,后者就会覆盖前者,即使没有存在物理上的包含关系. 比如,<div --> <h1> 直接规定标签样式 h1<!--直接规定系统标签里的样式--> </h1> <ol> <li><strong>派生选择器</strong></li> <li>没被选择到,所以不是斜的</li> <li>我也是</li> <!--只有li 内的 strong 会被改变--> </ol> <hr/> <div id="div1"> id选择器 <p>id选择器的派生选择</p> </div> <!--通过ID改变样式,需要注意,id值不可以重复,class却可以重复--> <hr/> <div class="red"> 类选择器 <p class="blue">选择某标签中的类</p> <!-- 也就是说先规定是 某一个标签, 然后所有的这个标签中的一些标签设定了类,需要找出他们,这种情况也就是说应用于 有其他标签也用了这个名字,如下 --> <h2 class="blue">类名也是blue,但是没有应用到上边的样式,是因为上边是 p.blue 才可以使用</h2> <h3>类选择器的派生选择,同ID选择器一样</h3> <p>aa</p> <!--在这直接写了个P标签,写一个P标签CSS样式,那么会直接将 p class=blue 标签的样式也覆盖, 误以为 .类名 标签 优先级大于 标签.类名,前者覆盖后者效果。其实不是。 因为如果更改一下CSS里 p.blue{} 的位置,放到.red p{} 后边,就会显示蓝色了,就不会出现覆盖了。 说明存在一个渲染前后的问题,在下边的时候看出来的。 按现在,找到一个p.blue渲染成蓝色,然后找.red p进行渲染,会把两个p标签都找到,然后再渲染成红色。就都成红色了。 把p.blue css放到.red p css下边,先把两个p标签都找到,渲染成红色,然后找到p.blue渲染成蓝色,就正常了。 是因为选择器在选择的时候出现的问题。选择出现了重复。就会有这样的效果出现。 在写CSS的时候尽量规避出现这样的 选择某一标签不精确,连带着选择了其他的一些标签。 去做的 两个并列 div的实验来看(一个div,另外一个 div class="d2"),又没了这样的渲染顺序一说。 我猜测,系统规定了比如 div 和div class="xx" 的这样的渲染顺序,无论CSS里先后顺序,都会先渲染所有的div 再渲染那些 有class的div 其余的一些情况,两个选择器选择的标签有重复的时候(不管是其中一者完全属于另一者,(下边的例子,从结构,内涵上都是这样) 还是两者互相包容,(这个例子的结构,就是一者完全属于另一者,但是从内涵来说 .类名 标签 和 标签.类名 可以互相包容,但是又有不一样的部分,互相独立) 都有可能出现,只要有相交的部分,就会出现)。系统分不清渲染前后顺序的时候,就会按CSS里的先后渲染, --> </div> <hr/> <div> <h1 title="属性选择器">属性选择器</h1><!--只要拥有title属性的都会被选择上--> <h1 title="shuxing">选择title属性等于某一值的元素</h1><!--只可以是英文值,中文没用--> <h1 title="shuxing xuanzeqi">选择title属性值中包含某一部分的元素</h1> <!--包含指定值的 title 属性的所有元素设置样式。适用于由空格分隔的属性值:--> <!--包含的一部分 必须跟别的部分用空格分开才有效。 如果以现在这个代码来说,第二个 h1 跟 第三个 h1 都是黑的。也就是按推断来说 css 中 ~=将=覆盖了,但是! 将第二个h1的css放到 第三个h1的css的后边,那么就会惊人的发现,~= 没有将 = 覆盖 。第二个变成了白色,第三个是黑色的。 我大胆猜测一下,是渲染的先后顺序。CSS文件里,前边的先渲染,后边的后渲染。 如果选择器在选择的时候,只要满足条件,就会选择上。然后进行一下渲染。 此例子中,按现在这个代码 =shuxing 的先被渲染成白色,第二个h1变白色。 然后继续寻找 ~=shuxing 的元素,找到了,就渲染成黑色。第二个h1和第三个h1都符合 ~=shuxing,所以再进行一次渲染,就都成黑色了。 如果调换位置,将第二个h1的css放到第三个h1css的后边,先寻找~=shuxing 的元素,发现两个都符合,都渲染成黑色。 然后,寻找=shuxing的元素,第二个h1符合,渲染成白色。OK完成。 --> <h1 lang="en">aaa</h1> <h1 lang="en-us">bbb</h1> <!--带有包含指定值的 lang 属性的所有元素设置样式。适用于由连字符分隔的属性值:--> <!--跟上边的一样,也会出现覆盖问题。注意一下就好了--> <form name="input" action="" method="get"> <input type="text" name="Name" value="Bill" size="20" /> <input type="text" name="Name" value="Gates" size="20" /> <input type="button" value="点这点这" /> </form> <!--属性选择器在为不带有 class 或 id 的表单设置样式时特别有用:--> <!--这个是先选择 标签,然后选择属性。 选择某标签内某属性是某值的元素--> </div> </body> </html>
body{ color: green; font-size: 1em; font-weight: bold; background-color: rgba(0, 12, 81, 0.85); } h1{ color: red; } li strong{ font-style: italic; } #div1{ color: darkblue; font-size: 2em; } #div1 p{ color: darkmagenta; font-size: 1em; } .red{ color: red; } p.blue{ color: blue; } .red h3{ color: darkgrey; } .red p{ color: darkred; } [title]{ color: greenyellow; } [title=shuxing]{ color: beige; } [title~=shuxing]{ color: black; } [lang=en]{ color: darkcyan; } [lang|=en]{ color: blanchedalmond; } input[type=text]{ width: 150px; margin-bottom: 1px; background-color: bisque; font-family: Times; display: block;/*让物件在下一行创建*/ } input[type=button]{ width: 120px; margin-left: 35px; display: block;/*不加这一句,按钮也在下一行出现,不知道为啥加*/ font-family: serif; }
一个HTML文件 一个CSS文件。
下面上具体效果图:
代码解释如下:
4部分,
第一部分就是 选择某一具体的标签设置样式
body{ color: green; font-size: 1em; font-weight: bold; background-color: rgba(0, 12, 81, 0.85); } h1{ color: red; } li strong{ font-style: italic; }
第二部分通过ID来选择某些元素 设置样式
#div1{ color: darkblue; font-size: 2em; } #div1 p{ color: darkmagenta; font-size: 1em; }
第三部分通过类来选择设置样式
.red{ color: red; } p.blue{ color: blue; } .red h3{ color: darkgrey; } .red p{ color: darkred; }
第四部分通过属性进行选择来设计样式
[title]{ color: greenyellow; } [title=shuxing]{ color: beige; } [title~=shuxing]{ color: black; } [lang=en]{ color: darkcyan; } [lang|=en]{ color: blanchedalmond; } input[type=text]{ width: 150px; margin-bottom: 1px; background-color: bisque; font-family: Times; display: block;/*让物件在下一行创建*/ } input[type=button]{ width: 120px; margin-left: 35px; display: block;/*不加这一句,按钮也在下一行出现,不知道为啥加*/ font-family: serif; }
一些需要主要的重点都写在了注释里。
再叙述一下。
4种 选择器方法来选择某些元素 设置样式。
标签名,ID,类,属性。
物理意义上的 内外,内优先级大于外。
如果物理上并列,那就看 意义上的 内外,意义范围小的要优先于范围大的
此外还有就是当选择器出现 重复选择某些标签进行设置时,需要考虑一个 CSS文件内代码 的先后顺序问题。涉及到一个渲染的先后问题。
相关文章推荐
- H5学习小结——div+css创建电子商务静态网页
- H5学习小结——div+css创建电子商务静态网页
- CSS学习(16)--打印属性
- H5学习笔记——CSS文本设置属性&颜色表示法
- HTML 学习H5的网站 (stage1-16)
- H5学习之17 CSS-text设置
- H5学习之22 CSS-导航栏的创建
- H5学习之21 css-padding-margin-outline
- H5学习笔记之CSS三大特性
- H5学习小结——div+css创建电子商务静态网页
- H5学习之20 CSS-table
- h5学习笔记: css布局案例练习
- H5简单动画的学习仅仅css操作
- H5学习之19 css-list
- h5学习之3(h5的常用选择器和css常见样式)
- 【H5学习】浏览器对CSS属性的支持
- H5学习之18 css-background
- H5学习笔记之CSS代码语法
- H5学习之25 CSS 给图片增加框 透明度的设置
- CSS学习之第三章:单位和值