理解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 ...
随机推荐
- H5实现摇一摇技术总结
摇一摇遇到的问题 一.如何对摇晃效果进行反馈 刚开始的处理方式是,摇晃过程中不做任何处理,但后来反馈说这种效果不好,好像就没有摇动一样,如果声音也不响的话,就真的和什么都没发生一样. 后来想了想,加入 ...
- 关于textview显示特殊符号居中的问题
话说这是2017年的第一篇博客,也是一篇技术博客.先从简单的一篇解决问题开始吧,千里之行,始于足下! ------------------------------------------------- ...
- ASP.NET Core 中间件之压缩、缓存
前言 今天给大家介绍一下在 ASP.NET Core 日常开发中用的比较多的两个中间件,它们都是出自于微软的 ASP.NET 团队,他们分别是 Microsoft.AspNetCore.Respons ...
- ExtJS 4.2 组件介绍
目录 1. 介绍 1.1 说明 1.2 组件分类 1.3 组件名称 1.4 组件结构 2. 组件的创建方式 2.1 Ext.create()创建 2.2 xtype创建 1. 介绍 1.1 说明 Ex ...
- C++ 11 多线程--线程管理
说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段.并行是指两个或多个独立的操作同时进行.注意这里是同时进行,区别于并发,在一个时间段内执行多个操作.在单核时代,多个线程是并 ...
- 微信小程序开发日记——高仿知乎日报(下)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...
- cesium核心类Viewer简介
1.简单描述Viewer Viewer类是cesium的核心类,是地图可视化展示的主窗口,cesium程序应用的切入口,扮演必不可少的核心角色. 官网的英文解析如下: A base widget fo ...
- 【Star CCM+实例】开发一个简单的计算流程.md
流程开发在CAE过程中处于非常重要的地位. 主要的作用可能包括: 将一些经过验证的模型隐藏在流程中,提高仿真的可靠性 将流程封装成更友好的界面,降低软件的学习周期 流程开发实际上需要做非常多的工作,尤 ...
- Princeton Algorithms week3 Assignment
这周编程作业是实现检测点共线的算法.和排序算法有关系的地方在于,对斜率排序后可以很快的检测出来哪些点是共线的,另外这个算法的瓶颈也在于排序的性能. 一点收获: java传参数时传递的是值,这很多人都知 ...
- CentOS 6.5安装Node.js, npm
CentOS上可以通过下载*.tar.gz安装包的方式自己解压缩.编译的方式安装,同时还可以采用EPEL的方式安装: Node.js and npm are available from the Fe ...