理解CSS
写在前面的话:对于web开发,html完成网页的structure,css完成网页的presentation,js完成网页的behavior,今天就来说一说css,通过理解一些css的基础概念,能够更好的实现一些我们想要的功能。
====正文开始=====
当通过各个html标签完成网页的结构(structure),接下来就需要使用css完成网页的展示(presentation)。展示实现的功能无非就是设置各个html标签的大小、样式,各个html标签在网页中如何摆放等功能,因此可以总结为如下几个基本的问题:
1.如何找到各个html标签----css selector
2.如何看待各个html标签----css box model
3.如何布置各个html标签的位置----float和position
4.如何设置各个html标签的样式----基础样式和css3动态样式
下面就对照上面四个问题,一一进行说明。
1.如何找到各个html标签----css selector
能够正确找到我们需要操作的html标签, 是后面一切操作的前提条件。
css的基本语法为:selector{property:value},例如#testDiv{font-size:16px},其中选择器(selector)很多,只介绍一些主要的,其他的一些也要练习练习。
(1)id、class选择器
如果知道一个html标签的id,那么可以通过#标签id来选择;如果知道一个html标签的class,那么可以通过.标签class来选择。
(2)类型选择器
例如要选择body标签,可以直接写body{property:value}来设置。
(3)群组选择器
如果要选择多个,可以用逗号隔开。如#test1,#test2就可以选择id为test1和id为test2的html标签。
(4)包含选择符
使用空格隔开,例如#test1 p{}表示id为test1的标签内所有的p标签。
注意:有没有空格表示的含义不同,例如.class1.class2表示类名同时为class1和class2的标签;.class1 .class2表示.class1内的所有.class标签。
(5)伪类与伪对象:如a:hover{}表示当鼠标移至a标签上时,显示的样式。
(6)通配符:* 表示所有的对象。
2.如何看待各个html标签----css box model
通过css selector找到了各个html标签,但是想要能够随心所欲的对他们的位置布局进行设置,还是需要理解css是如何看待各个html标签的,这就是css box model。
(1)css把所有html标签看成box,这个box由width、height、padding、bord、margin组成,如下图所示:

其中css中设置的width和height指的是content的width和height。
(2)虽然css把所有的html标签看成box,但是box和box也是有不同的:有两种不同的box:block-leve box和in-line box,其中block-level box默认情况下占据一行,前后都有换行符,如div默认情况下就是block-level box;in-line box默认情况下按照内容决定大小,因此设置margin和padding无效,通过line-height设置高度。通过设置display属性,可以人为的改变html标签为block-level box或者in-line box。
例子:将一个div中的内容垂直居中,可以设置line-height与height相等,再设置text-align=center来实现。
3.如何布置各个html标签的位置----float和position
所有的html标签看成为box,这些box默认情况下,是按照默认的文档流来排列的;可以通过float和position改变默认的文档流。
(1)float:通过设置html标签的float属性,可以其脱离原来默认的文档流,例如float:left,表示该标签会往左移动,直到触碰到包含它的标签的边缘或者其他设置为float属性的标签;通过clear属性可以消除float的影响。
(2)position:该属性可以设置三个值,分别为relative、absolute、fixed,其中relative相对于其原始位置的移动;absolute脱离文档流,相对应最近的设置过position的标签,如果没有的话,则相对于初始的包含元素;fixed相对于viewport。
4.如何设置各个html标签的样式----基础样式和css3动态样式
css的基础样式,如设置font-size、color等等实现一些基本的功能;
css3增加了一些动态样式设置方法:分别为transition和animation,可以实现更加多样的功能;当对css3的动态属性理解的比较透彻之后,如果不想每次都从头写css,可以使用animate.css等简化操作,不过还是自己写的更加灵活。
备注:可以通过css3的media query实现响应式布局,不过从大的方面来看响应式布局可以分成三个层次:
(1)设置多套ui,这种效果最好,一般情况下,对于电脑端和手机端设置不同的ui。
(2)使用css3的 media query:例如对于手机端不同的屏幕大小,通过media query来判断,进而设置不同的css属性值。
(3)使用百分数:由于手机端屏幕的大小差异并不是特别大,因此,对于一些元素的高度和宽带通过设置百分比,即可达到自适应要求,因此很多情况下,也不去用media query了。
(完)
文档信息
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
- 本文为原创文章,欢迎转载,后续本博客会不断更新,因此请保留该文档信息。
- 本文地址:http://www.cnblogs.com/wuguanglei/p/4295518.html
理解CSS的更多相关文章
- 深入理解css BFC 模型
如果要深入理解css布局的各种原理,要在重构页面做得心应手的话,那么你就必须先理解这玩意 "BFC" , BlockFormatting Context(块级格式化上下文): 这里 ...
- 深入理解CSS中的层叠上下文和层叠顺序(转)
by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5115 零.世间的道 ...
- 深入理解CSS溢出overflow & overflow:hidden真的失效了吗[转载]
深入理解CSS溢出overflow http://www.cnblogs.com/xiaohuochai/p/5289653.html overflow:hidden真的失效了吗 http://www ...
- 深入理解css中的margin属性
深入理解css中的margin属性 之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些“坑”的,下面我会介绍margin的基本知识以及 ...
- 深入理解css中position属性及z-index属性
深入理解css中position属性及z-index属性 在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共 ...
- 深入理解CSS中的层叠上下文和层叠顺序
零.世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈.比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上.再比如说话语权,老婆的话永远是对的,领导的话永远是对的. 在C ...
- 理解CSS居中
我想很多在前端学习或者开发过程中,肯定会遇到如何让你的元素居中的问题,网上google肯定会有很多的解决方法.今天我就个人的项目与学习经验谈谈个人理解css如何让元素居中. 要理解css的居中,首先必 ...
- <转>HTML+CSS总结/深入理解CSS盒子模型
原文地址:http://www.chinaz.com/design/2010/1229/151993.shtml 前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverf ...
- 认识和理解css布局中的BFC
认识和理解css布局中的BFC BFC的定义 是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. Block Formatting Con ...
随机推荐
- Tomcat shutdown执行后无法退出进程问题排查及解决
问题定位及排查 上周无意中调试程序在Linux上ps -ef|grep tomcat发现有许多tomcat的进程,当时因为没有影响系统运行就没当回事.而且我内心总觉得这可能是tomcat像nginx一 ...
- linux基础学习笔记
我用的是centOS7.0版本的系统.linux的shell终端窗口类似于wind的command窗口 shell命令提示符格式:用户名@主机名:目录名 提示符 @前面的是已登录的用户名,@之后的为计 ...
- OpenCV模板匹配算法详解
1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...
- Android 中的mvvm
我们来了解一下MVVM模式与Databinding ,MVVM是一种模式,Databinding 是一种框架.DataBinding是一个实现数据和UI绑定的框架.而ViewModel和View可以通 ...
- SVN版本冲突,导致出现Files 的值“ < < < < < < < .mine”无效
只要根据错误提示,找到相应文件夹下的\obj\Debug文件夹下的 相应名字.csproj.FileListAbsolute.txt, 打开并删除含有'<<<<<< ...
- 学习笔记:delphi之TStringGrid
1.说明 最近加入了一个项目组,使用的开发工具是delphi6,想想又要开始搞这个工具有点小忧伤,但没办法谁让咱就是个打杂的尼... 的需求是显示一个类似于Word/excel的那种表格,可以合并列等 ...
- Vue.js——vue-resource全攻略
概述 上一篇我们介绍了如何将$.ajax和Vue.js结合在一起使用,并实现了一个简单的跨域CURD示例.Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的D ...
- DataTable转换成IList<T>的简单实现
DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的 ...
- [数据库基础]——图解JOIN
阅读导航 一.概要 二.JOIN分类 三.JOIN分类详解 一.概要 JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操 ...
- Flux 普及读本
话说当时做 APP 时,三月不知肉味,再次将眼光投放前端,有种天上一天,地下一年的感觉. Flux 是一种思想 了解的最好方式当然是看Flux官方文档了.React 中文站点也能找到对应的翻译版本,但 ...