理解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 ...
随机推荐
- 踩石行动:ViewPager无限轮播的坑
2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...
- OpenCASCADE Expression Interpreter by Flex & Bison
OpenCASCADE Expression Interpreter by Flex & Bison eryar@163.com Abstract. OpenCASCADE provide d ...
- 深入浅出JavaScript之原型链&继承
Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...
- duang~免费的学习视频来啦:学霸君之全栈测试
学霸君向童鞋们推荐一款 同名学霸学习 视频教程 重点是完全免费收看学习噢!!! 今天 学霸君推荐腾讯课堂的学霸君之全栈测试 复制下方链接至腾讯课堂中报名学习 https://ke.qq.com/cou ...
- Could not evaluate expression
VS15 调试变量不能显示值,提示:Could not evaluate expression 解决办法: 选择"在调试时显示运行以单击编辑器中的按钮"重启VS即可. 可参考:Vi ...
- bzoj3037--贪心
题目大意: applepi手里有一本书<创世纪>,里面记录了这样一个故事--上帝手中有着N 种被称作"世界元素"的东西,现在他要把它们中的一部分投放到一个新的空间中去以 ...
- PHP设计模式(八)桥接模式(Bridge For PHP)
一.概述 桥接模式:将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果. 二.案例 1.模拟毛笔(转) 需求:现在需要准备三种粗细(大中小),并且有五种颜色的比 如果使用蜡 ...
- Function.prototype.toString 的使用技巧
Function.prototype.toString这个原型方法可以帮助你获得函数的源代码, 比如: function hello ( msg ){ console.log("hello& ...
- Centos6.5 配置Nginx开机自启动
1.在/etc/init.d/目录下创建 nginx 文件,内容如下: #!/bin/sh # # nginx - this script starts and stops the nginx dae ...
- PADS Layout 颜色设置
一.板框.装配线.标注线配置: 二.个人爱好,我一般把Top pads设置成为浅绿色,Top Trace/vias/2D Line/Text/Cooper设置成为深绿色,Error设置成为黄色,而Bo ...