《CSS设计彻底研究》总结

选择器

CSS选择器主要包括id、class和标记选择器。复合选择器就是两个或多个基本选择器,通过不同方式连接而成的选择器。
交集选择器由连个选择器直接连接构成,其中第一个必须是标记选择器,第二个必须是类别选择器或者id选择器,这两个选择器之间不能有空格。这种方式构成的选择器,将选中同时满足前后定义的元素。
并集选择器是多个选择器通过逗号连接而成的。
最常用的是通过嵌套的形式,即多个选择器之间以空格隔开的后代选择器。

伪类选择器

除了3种主要类型的选择器之外,还有伪类选择器和伪元素选择器。
伪类选择器是在之前选择器的基础上,加上一些用于指定元素状态的关键字,如鼠标位置、浏览历史、内容状态等。伪类选择器的标志是在选择器与关键字之间以:间隔。

    a:hover {
        background: green;
    }
    a:visited {
        color: green;
    }

伪元素选择器的功能是在选择某元素的基础上,在文档中再增加一些额外的元素。伪元素的标志是添加::

   <p>is a boy</p>
   p::before {
      content: "sysuzhyupeng";
   }

before选择器将在段落之前插入content属性中的文字内容,所以段落将显示为”sysuzhyupeng is a boy”。

CSS层叠

CSS层叠指的是在CSS继承的基础上,出现冲突的解决方案。层叠的规则涉及权重的计算,这里不详细展开。

CSS禅意花园

CSS禅意花园是加拿大的设计师Dave Shea创建的,他在网站设计的过程中发现CSS的巨大潜力没有被发掘出来,采用征集作品的方式来展现CSS魅力。像两列布局的代表作《郊野》,三列布局的代表作193号作品,三列布局的变体《百合池塘》,多列布局的代表作《郁金香》,圆角设计的《日与夜》等。

盒子模型

在CSS中,一个独立的盒子由content、padding、margin和border组成。一个盒子所占的宽度和高度,是由盒子的4个部分相加而成的。
一个页面由很多盒子组成,这些盒子之间会相互影响,因此掌握盒模型需要从两方面来理解,一是理解一个孤立的盒子的内部结构,二是理解多个盒子间的相互关系。
盒子模型分为IE盒模型和w3c盒模型,IE盒模型的width包括了盒子的paddingborder,而w3c的width只包括盒子content的宽度。怎么样才算是选择了“标准 w3c 盒子模型”呢?很简单,就是在网页的顶部加上 doctype 声明。假如不加 doctype 声明,那么各个浏览器会根据自己的行为去理解网页,即 IE 浏览器会采用 IE 盒子模型去解释你的盒子,而 ff 会采用标准 w3c 盒子模型解释你的盒子,假如加上了 doctype 声明,那么所有浏览器都会采用标准 w3c 盒子模型去解释你的盒子。
border用于分隔不同元素,在计算精细的版面时,一定要将border的宽度考虑进去。border的属性有三个,分别是border-color、border-width和border-style。在给元素设background-color的时候,IE的作用域为padding + content,而Firefox则为padding + content + border。这在border设为dotted的时候表现得更明显(dotted的间隙展现出背景色)。
为了方便组织各种盒子的排列和布局,CSS规范的指定者进行了深入细致的考虑。CSS规范的思路是,先确定一种标准的排版模式,这样可以保证设置的简单化,这就是标准流。但是仅仅通过标准流的方式,很多版式是无法实现的,所以CSS规范又给出了浮动属性和定位属性等。
<span><div>标记一样,作为容器标记而被广泛应用在HTML语言中,两者除了块级元素和行内元素的区别之外,可以互换,这两个标记起到的作用都是独立出各个区块,在这个意义上两者没有不同。
如果要精确地控制盒子的位置,就必须对margin有更深的理解,因为padding存在于盒子内部,通常它不会涉及盒子之间的关系和相互影响的问题。当两个行内元素紧邻时,它们之间的距离为第一个盒子的margin-right加上第二个盒子的margin-left。然而如果不是行内元素,而是垂直的块级元素,就会出现外边距合并的情况,较小的margin塌陷到较大的margin中,要解决这个问题可以参考我另一篇博文BFC
margin也可以设为负值,会使盒子向相反的反向移动,甚至覆盖在另外的盒子上。当块是父子关系的时候,可以将子块从父块中分离出来。

盒子的浮动与定位

在标准流中,没有指定宽度的块级元素会沿着水平方向无限伸展,直到包含它的元素的边界。CSS中有一个属性float默认值为none,如果将float的值设为left或者right,盒子的宽度不再伸展,而是根据盒子内的内容宽度来确定。当两个元素分别向左和向右浮动的时候(box1向右浮动,box2向左浮动),我们发现,可以在不调整HTML的情况下通过CSS布局调整内容的显示位置(box2在box1的左边)。这样我们就可以在写HTML的时候,确定内容的逻辑位置,在CSS中确定内容的显示位置,把重要的内容放在逻辑位置的较前面,这样加载网页的时候,用户就会先看到重要内容。
使用clear属性可以清除浮动的影响,假设不希望文字围绕左边浮动的盒子,可以在文字的p标签中设置clear: left。clear属性可以设为left、right和both(both通常用来清除整行元素的浮动)。
CSS中position的值有四种:

  • static,默认值,盒子按照标准流(包括浮动)方式布局
  • relative,盒子相对于它原来的标准进行移动,相对定位的盒子仍在标准流。
  • absolute,绝对定位,盒子以它的包含框为基准进行偏移,绝对定位的盒子从文档流中脱离。
  • fixed,固定定位,与绝对定位相似,只是包含框变成浏览器窗口。

确定absolute的包含框有这几个原则:

  • position属性已经被设置,而且不是static。所以经常出现父元素相对定位、绝对定位或者固定定位,而子元素绝对定位的情况。
  • 是从子元素向祖先元素中查找,祖先元素中第一个满足上一条规则的元素。

IE6中有一个固有错误,相对于父元素的左边进行绝对定位会加上父元素的padding,这时候需要给父元素添加一个属性height: 1%

浏览器的Bug与Hack

任何程序都很难清除掉所有Bug,浏览器也一样。加上对规范的解释不统一,因此类似的错误一直存在。因此也应运而生很多CSS Hack来解决这些Bug,多数CSS Hack都是用来解决IE5.5以下浏览器的。因为浏览器的支持度问题,网站又分为了渐进增强和优雅降级两种开发方式。

z-index

z-index用来设置重叠块的上下位置,和它的名称一样,想象页面为x-y轴,垂直于页面的方向为z轴。当两个块z-index值相同时,按照原来的方式堆叠。z-index默认值为0,可以设置正负值。

字体

   p {
      font-family: Arial, "Times New Roman";
   }

以上语句同时声明了两个字体名称,如果用户的计算机中没有第一种,则使用第二种。一些字体的名字中含有空格,所以需要用引号将其引起来。
文字大小的常用单位是px,表示在浏览器上一个像素单位的大小,因为访问者的显示器分辨率不同,而且每个像素的实际大小也不同,所以px实际上是一个相对单位。现在我们常用的适配屏幕布局的单位是rem。
字体的行高line-heigth可以设置成与字体大小的比值。

颜色

在HTML页面中,颜色统一采用RGB格式。由三原色的不同比重组成,一共有0-255档。当三种颜色都设置为255时就是白色,其中,#FFFFFF是十六进制的表示法,前两位为红色分量,接下来为绿色,最后为蓝色。不仅可以写成十进制,也可以写成rgb(0%, 0%, 0%)的百分比,或者0-255的十进制数字。

圆角

一个 150px x 150px 大小的方形,将它的四个角的半径都设置成 50%。根据 W3C border-radius 的规范定义,如果 border-radius 的值是百分比的话,就是相对于 border box 的宽度和高度的百分比。在我们的例子中,盒子的宽高都是 150px,所以 50% 对应的就是 75px。
也就是说,把border-radius设置为50%已经可以实现圆角效果了,设成100%反而会损失性能,具体可以参考border-radius50%和100%的区别

CSS3动画

CSS3动画主要通过transition和animation两种方式来实现,其中,transition是为页面元素设置某个需要产生动画效果的属性,如宽度(width),高度(height),透明度(opacity),甚至3D旋转等,并使这些值在变化时产生相应的过渡效果。而animation可以预先为动画设置多个节点,在每个节点中含有不同的状态属性,比transition来得更精细。

   a {
      color: #fff;
   }
   a:hover {
      color: green;
   }
   a {
      -webkit-transition: all .5s;
      transition: all .5s;
   }

这里我们设置了all,即a标签任何属性变化,都以动画的形式呈现,动画的时间为0.5秒。我们还可以设置过渡效果的速度变化(加速度),除了linear,ease外,还有ease-in,ease-out,ease-in-out等速度曲线可以选择,分别代表慢速开始,慢速结束,慢速开始和结束。

   a {
      -webkit-transition: all .5s linear;
      transition: all .5s linear;
   }

我们还能为动画设置延迟的时间,放在最后一个参数。

   a {
      transition: color .5s linear, background .5s ease-in-out 1s;
   }

我们还可以利用伪元素来实现一些动画效果,这里要注意的是,伪元素的hover状态是:hover::after,而不能为::after:hover(在less中不用考虑这个问题)

   a:hover {
      padding-left: 20px;
   }
   a:hover::after {
      right: 5%;
   }

通过CSS3可以实现很多动画效果,比如滑屏(切换left值),或者对页面进行缩放,使用transform属性中的scale方法。

   .content {
       -webkit-transform: scale(1, 1);
       transform: scale(1, 1);
   }
   .content.move {
       -webkit-transform: scale(0, 0);
       transform: scale(0, 0);
   }

还可以实现3D翻页效果等,这里就先不展开。

好多资源不全,所以再次上传 《CSS设计彻底研究》是一本深入研究和揭示CSS设计技术的书籍。《CSS设计彻底研究》在透彻地讲解CSS核心技术的基础上,深入到各个实际应用领域中,充分向读者演示了如何使用CSS的各项技术,实现令人眩目的网页布局和效果。《CSS设计彻底研究》适合需要使用CSS的Web设计人员和开发人员阅读,最好具备一定的HTML和网页设计制作基础。 CSS:像艺术家一样浪漫,像工程师一样严谨; 核心原理、技巧与设计实战; 剖析CSS原理4大核心:盒子模型、标准流、浮动、定位创建主流流览器全兼容的网站:IE 6/UE 7/ Firefox讲解各类网页布局方法:固定宽度布局、变宽布局制作流行的网页元素:导航、菜单、圆角、面板为学习者提供:CSS常用单词英汉对照表内容丰富的配套网站。 《CSS设计彻底研究》是一本深入研究和揭示CSS设计技术的书籍。《CSS设计彻底研究》透彻地讲解CSS核心技术的基础上,深入到各个实际应用领域中,充分向读者演示了如何使用CSS的各项技术,实现令人眩目的网页布局和效果。 内容提要 -------------------------------------------------------------------------------- 《CSS设计彻底研究》详细介绍了CSS核心基础、盒子模型等知识,力求把道理和方法讲清楚,采用了“探索式”的讲解方法,对于一个问题,例如标准流、浮动、定位等规律,均通过一系列动手实验,使读者自己就能够非常自然地得出结论,使读者不但知其然,而且还知其所以然。 在《CSS设计彻底研究》中对设计中常用的网页元素和布局方式都给出详细的分类和归纳,并讲解了完整的解决方法,主要包括各种导航菜单(水平的、竖直的、固定宽度的、自适应宽度的、下拉的等),Tab面板、伸缩面板和折叠面板,以及各种形式的分列布局(固定宽度的、变化宽度的、固定宽度与变化宽度结合的),等等。这样读者在理解了方法的基础上,可以直接将案例用在自己的设计中的,只需要按照所需进行修改即可。 目录 -------------------------------------------------------------------------------- 第1章 (X)HTML与CSS核心基础 1.1 HTML与XHTML 1.1.1 追根溯源 1.1.2 DOCTYPE(文档类型)的含义与选择 1.1.3 XHTML与HTML的重要区别 1.2 (X)HTML与CSS 1.2.1 CSS标准简介 1.2.2 在HTML中引入CSS的方法 1.3 基本CSS选择器 1.3.1 标记选择器 1.3.2 类别选择器 1.3.3 ID选择器 1.4 复合选择器 1.4.1 “交集”选择器 1.4.2 “并集”选择器 1.4.3 后代选择器 1.5 CSS的继承特性 1.5.1 继承关系 1.5.2 CSS继承的运用 1.6 CSS的层叠特性 1.7 本章小结 第2章 “CSS禅意花园”作品鉴赏 2.1 “CSS禅意花园”简介 2.2 郊野——两列布局 2.3 像素画——三列布局 2.4 百合池塘——三列布局变体 2.5 郁金香——多列布局 2.6 日与夜——包含圆角的设计 2.7 Si6——包含倾斜的设计 2.8 清茶时光——装饰性设计 2.9 爱之空气——流体布局 2.10 谷香——食品主题设计 2.11 城市——建筑主题设计 2.12 “卡通版”禅意花园——特色效果 2.13 收音机——特色效果 2.14 杀手风格——特色效果 2.15 海底世界——特色效果 2.16 博物馆——特色设计 2.17 剧院效果——特色效果 2.18 本章小结 第3章 深入理解盒子模型 3.1 盒子的内部结构 3.2 边框(border) 3.2.1 实验1——border-style 3.2.2 属性值的简写形式 3.2.3 实验2——属性的缩写形式 3.2.4 实验3——边框与背景 3.3 内边距(padding) 3.4 外边距(margin) 3.5 盒子之间的关系 3.5.1 HTML与DOM 3.5.2 标准文档流 3.5.3  div 标记与 span 标记 3.6 盒子在标准流中的定位原则 3.6.1 实验1——行内元素之间的水平margin 3.6.2 实验2——块级元素之间的竖直margin 3.6.3 实验3——嵌套盒子之间的margin 3.6.4 实验4——将margin设置为负值 3.7 CSS中的几何题 3.8 本章小结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值