css工作原理

Normalize.css

Normalize.css
是一种CSS reset的替代方案。它在默认的HTML元素样式上提供了跨浏览器的高度一致性。相比于传统的CSS reset,Normalize.css是一种现代的、为HTML5准备的优质替代方案。

html

html 标签

知乎总结的html tags
html一共有114个标签,但html5有添加了一些标签,如nav、header、article、section、aside、footer等。

闭合标签

闭合标签的基本格式如下:
<标签名>文本内容

可以给这个标签添加一些属性,比如:

<标签名 属性_1="属性值" 属性_2="属性值">文本内容

标题、段落等文本元素都要求闭合标签,也就是要有一个开标签和一个闭标签,比如:

Words by Dogsworth

I wandered lonely as a dog.

引用内容用自闭合标签

<标签名 属性_1="属性值" 属性_n="属性值" />

非文本内容是通过自闭合标签显示的。闭合标签与自闭合标签的区别在于,闭合标签包含的是会显示的实际内容,而自闭合标签只是给浏览器提供一个对要显示内容的引用。
<标签名 属性_1="属性值" 属性_n="属性值" />

My dog Cisco

块级元素和行内元素

** 块级元素盒子会扩展到与父元素同宽**

块级标签

-

:6级标签,

表示最重要

:段落

    :有序列表
  1. :列表项
    :独立引用

行内元素盒子会“收缩包裹”其内容,并且会尽可能包紧。

行内标签:

:链接(anchor,锚)
:图片
:斜体
:重要
:简写
:引证
:文本内引用

css

  1. 行内样式
  2. 嵌入样式
  3. 链接样式

This paragraph simply takes on the browser's default paragraph style.

By adding inline CSS styling to this paragraph, you override the default styles.

  
css样式

CSS规则分两部分,即选择符和声明。声明又由两部分组成,即属性和值。声明包含在一对花括号内。
图中文字:selector:选择符;declaration:声明;property:属性;value:值;opening curly bracket:左花括号;closing curly bracket:右花括号。

对这个基本的结构,有三种方法可以进行扩展。

第一种方法:多个声明包含在一条规则里。

p {color:red; font-size:12px; font-weight:bold;}

这样,一条规则就可以把段落文本设置成红色,12像素大,粗体。

第二种方法:多个选择符组合在一起。如果想让h1、h2和h3的文本都变成蓝色,粗体,可以这样分别写:

h1 {color:blue; font-weight:bold;} 
h2 {color:blue; font-weight:bold;} 
h3 {color:blue; font-weight:bold;}

但其实,把三个选择符组合在一起也可以,这样就能减少重复输入:

h1, h2, h3 {color:blue; font-weight:bold;}

千万注意每个选择符之间要用逗号分隔(最后一个后面不用加)。

第三种方法:多条规则应用给一个选择符。 假设,你在写完前面那条规则后,又想只把h3变成斜体,那可以再为h3写一条规则:

h1, h2, h3 {color:blue; font-weight:bold;} 
h3 {font-style:italic;}

选择符分类

用于选择特定元素的选择符又分三种。

  1. 上下文选择符。基于祖先或同胞元素选择一个元素。
  2. ID和类选择符。基于id和class属性的值(你自己设定)选择元素。
  3. 属性选择符。基于属性的有无和特征选择元素。
上下文选择符

上下文选择符的格式如下:

标签1 标签2 {声明}

上下文选择符,严格来讲(也就是CSS规范里),叫后代组合式选择符(descendant combinator selector),就是一组以空格分隔的标签名。用于选择作为指定祖先元素后代的标签。

article p {font-weight:bold;}

这个例子中的上下文选择符表明,只有是article后代的p元素才会应用后面的样式。换句话说,上面这条规则的目标是位于article上下文中的p元素。

特殊的上下文选择符
  • 子选择符>
    标签1 > 标签2

    标签2必须是标签1的子元素,或者反过来说,标签1必须是标签2的父元素。与常规的上下文选择符不同, 这个选择符中的标签1不能是标签2的父元素之外的其他祖先元素。

    section > h2 {font-style:italic;}

  • 紧邻同胞选择符+
    标签1 + 标签2
    标签2必须紧跟在其同胞标签1的后面。

    h2 + p {font-variant:small-caps;}

  • 一般同胞选择符~
    标签1 ~ 标签2

    标签2必须跟(不一定紧跟)在其同胞标签1后面。

    h2 ~ a {color:red;}

  • 通用选择符*

    通用选择符*(常被称为星号选择符)是一个通配符,它匹配任何元素,因此下面这条规则

    * {color:green;} 会导致所有元素(的文本和边框)都变成绿色。不过,一般在使用*选择符时,都会同时使用另一个选择符。p * {color:red;}

ID和类选择符
类属性

This is a heading with the same class as the second paragraph.

This tag has no class.

When a tag has a class attribute, you can target it regardless of its position in the hierarchy.





 
Stylin' with CSS - Figure 2.15 The Class Attribute





    

This is a heading with the same class as the second paragraph.

This tag has no class.

When a tag has a class attribute, you can target it regardless of its position in the hierarchy.

css class style 显示效果

css class sytle

多类选择符

.specialtext .featured {font-size:120%;}
多个类名,如这里的specialtext和featured,放在同一对引号里,用空格分隔。实际上,更准确的说法,就应该是HTML的class属性可以有多个空格分隔的值。要选择同时存在这两个类名的元素,可以这样写:

ID属性

ID与类的写法相似,而且表示ID选择符的#(井号)的用法,也跟表示类选择符的.(句号)类似。

如果有一个段落像下面这样设定了ID属性

This is the special text.

那么,相应的ID选择符就是这样的:
#specialtext {CSS样式声明}

ID和类的小结
  1. 什么时候使用ID:ID的用途是在页面中唯一地标识一个元素。
  2. 什么时候使用类:类的目的是为了标识一组具有相同特征的元素。

ID的用途是在页面标记中唯一地标识一个特定的元素。它能够为我们编写CSS规则提供必要的上下文,排除无关的标记,而只选择该上下文中的标签。

相对来说,类是可以应用给任意多个页面中的任意多个HTML元素的公共标识符,以便我们为这些元素应用相同的CSS样式。而且,使用类也让为不同标签名的元素应用相同的样式成为可能。

层叠优先级

规则一:包含ID的选择符胜过包含类的选择符,包含类的选择符胜过包含标签名的选择符。

规则二:如果几个不同来源都为同一个标签的同一个属性定义了样式,行内样式胜过嵌入样式,嵌入样式胜过链接样式。在链接的样式表中,具有相同特指度的样式,后声明的胜过先声明的。

规则三:设定的样式胜过继承的样式,此时不用考虑特指度(即显式设定优先)。

样例思考

display:

1、块级标签转换为行内标签:display:inline;

2、行内标签转换为块级标签:display:block;

3、转换为行内块标签:display:inline-block

css display
/*style.css source  */
@font-face {
  font-family: 'lakeshore';
  src: url('fonts/LAKESHOR-webfont.eot');
  src: url('fonts/LAKESHOR-webfont.eot?#iefix') format('embedded-opentype'),
       url('fonts/LAKESHOR-webfont.woff') format('woff'),
       url('fonts/LAKESHOR-webfont.ttf') format('truetype'),
       url('fonts/LAKESHOR-webfont.svg#lakeshore') format('svg');
  font-weight: normal;
  font-style: normal;
}

body {
  font-size: 40.5%;
  background: 'white';
  /* background-color: #0f0; */
}

a[href='#'] {
  /* 添加到文本的修饰 */
  text-decoration: blink;
}

.logo-text {
  background: white;
  text-align: center;
  text-transform: lowercase;
  /* font-family: lakeshore; */
  font-size: 5em;
}

.thumbnail-list {
  /* padding: 10; */
  list-style: none;
  padding: 0;
  white-space: nowrap;
  /*auto 如果溢出框,则应该提供滚动机制。 */
  overflow-x:  auto;
}

.thumbnail-item + .thumbnail-item {
  margin-top: 3em;
}

.thumbnail-item {
  /* display: block; */
  display: inline-block;
  /* width: 200px; */
  width: 300px;
  border: 2px solid rgb(100%, 50%, 100%);
  border: 1px solid rgba(100%, 100%, 100%, 0.8);
}

.thumbnail-image {
  display: block;
  width: 100%;
}

.thumbnail-title {
  display: block;
  margin: 0;
  padding: 0.5em 1em;
  background: rgb(96, 125, 120);
  color: rgb(202, 238, 255);
  font-family: sans-serif;
  font-size:3em;
}


  
    
    ottergram
    
  
  
    

ottergram

通过对上面css的分析,我们可以初步理解class样式的设置以及对display属性的理解。

你可能感兴趣的:(css工作原理)