理解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 ...
随机推荐
- 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成
阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...
- 使用struct处理二进制
有的时候需要用python处理二进制数据,比如,存取文件.socket操作时.这时候,可以使用python的struct模块来完成. struct模块中最重要的三个函数是pack(), unpack( ...
- 如何在网页中提取Email地址
开博好久了,今天第一次发表技术文档,之前总是将一些好的事例保存在电脑,时间久了找起来也很麻烦,所以还是放在博客里进行归类比较方便,这样也能将自己在学习过程中的一些心得体会分享给大家,也能给需要的人一点 ...
- 小兔JS教程(三)-- 彻底攻略JS回调函数
这一讲来谈谈回调函数. 其实一句话就能概括这个东西: 回调函数就是把一个函数当做参数,传入另一个函数中.传进去的目的仅仅是为了在某个时刻去执行它. 如果不执行,那么你传一个函数进去干嘛呢? 就比如说对 ...
- JDBC简介
jdbc连接数据库的四个对象 DriverManager 驱动类 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 ...
- 2016/12/31_Python
今天学习主要内容: Python: 1.with语句(补充昨天的文件操作) 用with打开的文件在脚本结束会自动关闭,以防普通打开方式忘记关闭文件连接 语法: with open("demo ...
- Python 基础之一变量和赋值
变量:程序在运行的时候会用到很多临时存储数据,这个时候就用到了变量,临时数据的名字. Python中变量不需要声明,直接可以使用,变量的数据类型由赋值确定. >>> name=&qu ...
- 整理下.net分布式系统架构的思路
最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...
- document.compatMode
在我电脑屏幕上显示的 电脑是 1920*1080这是在document.compatMode:css1Compat模式 window.screen.availWidth 1920 window.scr ...
- Linux虚拟化学习笔记<一>
关于虚拟化,原理的东西是非常复杂的,要想完全理解,没有足够的耐心是不不能完全学透这部分内容的.那下面我主要以资源汇总的形式把一些资料罗列出来,帮助大家快速理解虚拟化,快速使用和配置. 为什么要虚拟化: ...