CSS(一)

2 篇文章 0 订阅

CSS——Cascading Style Sheets——层叠样式表。
CSS如何与html结合呢——当然是通过选择器。

页面呈现可以分为两类——文字,块。

针对文字来说,我们可以设置字体、字号、加粗、斜体、背景色等等;
对于块来说情况比较多,有盒子模型、浮动、定位、display、背景等;

1、布局
经典三列布局
Bootstrap栅格布局
百度首页布局
微博布局
人人网布局
瀑布流布局

  1. “层叠”的概念

      CSS——层叠样式表,其中的“层叠”是什么意思呢?层叠就是浏览器对多个样式来源进行叠加,最终确定结果的过程。举一个简单的例子:
      这里写图片描述

2.样式来源

css之所以有“层叠”的概念,是因为有多个样式来源。其实css的样式来源有5个,开发人员只能接触到后面3个。
这里写图片描述

1 html, address,blockquote,body, dd, div,dl, dt, fieldset, form,frame, frameset,h1, h2, h3, h4,h5, h6, noframes,ol, p, ul, center,dir, hr, menu, pre { display: block }/*以上列表元素默认状态下一块状显示,未显示的将以内联元素显示,该列表针对HTML4版本,部分元素在XHTML1中将废弃*/
 2 li { display: list-item }/*默认以列表显示*/
 3 head { display: none }/*默认不显示*/
 4 table { display: table }/*默认为表格显示*/
 5 tr { display: table-row }/*默认为表格行显示*/
 6 thead { display: table-header-group }/*默认为表格头部分组显示*/
 7 tbody { display: table-row-group }/*默认为表格行分组显示*/
 8 tfoot { display: table-footer-group }/*默认为表格底部分组显示*/
 9 col { display: table-column }/*默认为表格列显示*/
10 colgroup { display: table-column-group }/*默认为表格列分组显示*/
11 td, th { display: table-cell; }/*默认为单元格显示*/
12 caption { display: table-caption }/*默认为表格标题显示*/
13 th { font-weight: bolder; text-align: center }/*默认为表格标题显示,呈现加粗居中状态*/
14 caption { text-align: center }/*默认为表格标题显示,呈现居中状态*/
15 body { margin: 8px; line-height: 1.12 }
16 h1 { font-size: 2em; margin: .67em 0 }
17 h2 { font-size: 1.5em; margin: .75em 0 }
18 h3 { font-size: 1.17em; margin: .83em 0 }
19 h4, p, blockquote, ul, fieldset, form, ol, dl, dir, menu { margin: 1.12em 0 }
20 h5 { font-size: .83em; margin: 1.5em 0 }
21 h6 { font-size: .75em; margin: 1.67em 0 }
22 h1, h2, h3, h4, h5, h6, b,strong { font-weight: bolder }
23 blockquote { margin-left: 40px; margin-right: 40px }
24 i, cite, em,var, address { font-style: italic }
25 pre, tt, code, kbd, samp { font-family: monospace }
26 pre { white-space: pre }
27 button, textarea, input, object, select { display:inline-block; }
28 big { font-size: 1.17em }
29 small, sub, sup { font-size: .83em }
30 sub { vertical-align: sub }/*定义sub元素默认为下标显示*/
31 sup { vertical-align: super }/*定义sub元素默认为上标显示*/
32 table { border-spacing: 2px; }
33 thead, tbody, tfoot { vertical-align: middle }/*定义表头、主体表、表脚元素默认为垂直对齐*/
34 td, th { vertical-align: inherit }/*定义单元格、列标题默认为垂直对齐默认为继承*/
35 s, strike, del { text-decoration: line-through }/*定义这些元素默认为删除线显示*/
36 hr { border: 1px inset }/*定义分割线默认为1px宽的3D凹边效果*/
37 ol, ul, dir, menu, dd { margin-left: 40px }
38 ol { list-style-type: decimal }
39 ol ul, ul ol, ul ul, ol ol { margin-top: 0; margin-bottom: 0 }
40 u, ins { text-decoration: underline }
41 br:before { content: "A" }/*定义换行元素的伪对象内容样式*/
42 :before, :after { white-space: pre-line }/*定义伪对象空格字符的默认样式*/
43 center { text-align: center }
44 abbr, acronym { font-variant: small-caps; letter-spacing: 0.1em }
45 :link, :visited { text-decoration: underline }
46 :focus { outline: thin dotted invert }
47  /* Begin bidirectionality settings (do not change) */
48 BDO[DIR="ltr"] { direction: ltr; unicode-bidi: bidi-override }/*定义BDO元素当其属性为DIR="ltr"时的默认文本读写显示顺序*/
49 BDO[DIR="rtl"] { direction: rtl; unicode-bidi: bidi-override }/*定义BDO元素当其属性为DIR="rtl"时的默认文本读写显示顺序*/
50 *[DIR="ltr"] { direction: ltr; unicode-bidi: embed }/*定义任何元素当其属性为DIR="ltr"时的默认文本读写显示顺序*/
51 *[DIR="rtl"] { direction: rtl; unicode-bidi: embed }/*定义任何元素当其属性为DIR="rtl"时的默认文本读写显示顺序*/
52 @media print { /*定义标题和列表默认的打印样式*/
53     h1 { page-break-before: always }
54     h1, h2, h3,    h4, h5, h6 { page-break-after: avoid }
55     ul, ol, dl { page-break-before: avoid }
56 }
第三,<link>引用的css文件

       引用css文件

 第四,<style>中编写的样式代码

       <style>中编写样式比较熟悉。

 第五,<a style=’ ’>中编写的样式代码

       标签style属性中编写样式。

这里写图片描述

如上图,不同来源的两个样式,第一个样式设置了font-weight,第二个没有,浏览器会把它叠加在一起,即浏览器会把各个零散的整合成一个整体。第一个样式color:red,第二个样式color:blue,浏览器会让后者覆盖前者,最终结果还是color:blue。

   覆盖的默认规则是后者覆盖前者,但是又一个特殊情况——!important。

这里写图片描述
如上图。虽然color:blue是后来者,但是它没有居上,因为前者color:red跟着!important。这就像得到一个尚方宝剑,有最高执行权,其他人统统让路,否则佛挡杀佛。

diplay:table

先给出一个快速思考题:<table><div>在容器尺寸上最大区别是什么(只是容器尺寸,不考虑内容区别)?请在两秒钟内说出答案。

   答案是——div宽度和父容器相同,table宽度根据内容而定——即table具有“包裹性”。

这里写图片描述

display: table-cell
table-cell我们却能用得到,而且是用它来干一件很重要的事情——多列布局。

这里写图片描述

body样式
这里写图片描述
因此大家都知道在css中用 *{margin:0} 来解决这一兼容性问题。
就是浏览器偷偷的做了优先级的手脚。如果在正常情况下,*选择器在遇到标签选择器时,是不会起作用的,及时它是“后加载”的
这里写图片描述

这里写图片描述

上图是编写line-height的三种形式,大家觉得哪种形式最好?区别是什么?

情况1:永远按照文字的1.4倍计算,不管文字的高度如何,可适应任何变化;
情况2:永远按照1.4em计算,随着em的值改变,不管文字高度如何(此时文字高度可能已经通过绝对的px值该表了大小,而不是随em改变的);
情况3:就是25px,绝对的。

  相信看到这里大家会发现,通过一个line-height我能能窥探到的道道有很多。如果大家看懂了这三种情况,从软件设计和系统扩展的角度说,当然我们都会选择第一种。
  
em和px

em是什么?——em是一个浏览器识别的长度单位,但是它不是绝对的、固定的,而是相对的
从现在开始,与字体大小有关的css,全部都用em!

粗体和斜体

这里写图片描述

inline-block

 学习还是有捷径的。看看浏览器默认样式告诉你的捷径:button、input就是inline-block!这样以点播你就会一下子明白,最起码能给你一个很好的形象的概念。看看button和input的表现,你就知道inline-block是什么样子了:

  能被父容器居中、能设置高度宽度和margin、不会像table或div那样占一正行……——这就是inline-block——记得这是浏览器默认样式告诉你的。

css与html结合

css和html的结合——说白了就是选择器。

  1. 选择器

说到css选择器,大家都知道有许多种,但是真要你去掰着手指头数一数的话,你可能需要数几分钟。其实这么多选择器,完全可以分为两类:

标签选择器(*是特殊情况),可单标签,也可上下文多标签;
属性选择器(id和class都是属性,特殊的属性);

1.1. 标签选择器
1.1.1 通用选择 *
通用选择器 * 大家应该都比较熟悉了,最常用的就是 *{margin:0; box-sizing:border-box;}。mragin:0咱们在上一节已经说过,box-sizing:border-box将在后面的盒子模型那块再详细描述。

多标签选择器一般和html上下文有关,它有以下集中分类

选择一个祖先的所有子孙节点,例如 div p{…}
选择一个父元素的所有直属节点,例如 div > p{…}
选择某一个元素紧挨着的兄弟节点,例如 li + li{…}
选择某一个元素的所有同胞节点,例如 span ~ a{…}
以上各种情况的组合应用(不要组合过于复杂,编码讲求可读性第一)

2.2. 属性选择器
2.2.1 特殊1:id选择器

  基础知识,不再赘述。

  按照许多css教程上讲的,id选择器和属性选择器是不同的两个类别,为什么要把id选择器放在属性选择器下面的呢?因为css选择器是根据html节点的特性来设置的,id也是一个属性,只是它是一个比较特殊的属性,每个html节点的id不能重复。

  由于特殊,而且比较常用,所以就单独给id选择器一个“#”,本质上就是一个属性选择器。下面两行代码的执行效果完全相同:

  这里写图片描述
2.2.2 特殊2:class选择器

  基础知识,不再赘述。

  class也是一个特殊的属性,之所以把它放在属性选择器下,和上文将的id一样。
2.2.3 属性选择器

  属性选择器有两种情况:

只通过属性名选择:img[title]{…      }
通过属性名和属性值选择:input[type=’text’]{…}

  这两个也是比较基础的,再次也就不再详细展开了,不了解的朋友可以去看看基础教程补补课。

  1. 伪类和伪元素

      上文提到了若干种选择器类型,伪类和伪元素可针对任何一种选择器使用。
    3.1. 伪类

      伪类分为UI伪类和结构化伪类。
    3.1.1 UI伪类

      UI伪类都比较简单常用,我下面简单写几句代码,就不再详细说了。
    这里写图片描述
      
    3.1.2 结构化伪类(IE低版本不行)

      先问大家一个问题:如何实现一个表格间隔显示背景颜色,如图:
    这里写图片描述

最简单的方式莫过于使用结构化伪类,一句样式设置即可实现。
这里写图片描述

结构化伪类有如下书写选项,至于什么意思,从字面意思即可理解:
这里写图片描述

 第二,清除浮动的样式大家都知道吧?这就是一个很典型的伪元素应用场景:

这里写图片描述  

  (在讲到css浮动时,会专门讲解clearfix)

zen-Coding

  jquery可以通过一段css选择器表达式从既有的html结构中选择符合表达式的dom组,但是zen-coding反其道而行之——可以根据css选择器表达式创造出html节点。不得不佩服这帮人的创造力。
这里写图片描述

选择器优先级

我们需要引入一个概念——特指度(specificity)。特指度表示一个css选择器表达式的重要程度,可以通过一个公式来计算出一个数值,数越大,越重要。

  这个计算叫做“I-C-E”计算公式,
 还有一个重点要注意:!important优先级最高,高于上面一切。* 选择器最低,低于一切。

简版规则

包含ID的选择器胜过包含Class的选择器,包含Class的选择器胜过包含元素的选择器;例如下图,第一个特指度更高:
这里写图片描述

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值