写在前面的话:对于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了。

(完)

文档信息

理解CSS的更多相关文章

  1. 深入理解css BFC 模型

    如果要深入理解css布局的各种原理,要在重构页面做得心应手的话,那么你就必须先理解这玩意 "BFC" , BlockFormatting Context(块级格式化上下文): 这里 ...

  2. 深入理解CSS中的层叠上下文和层叠顺序(转)

    by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5115 零.世间的道 ...

  3. 深入理解CSS溢出overflow & overflow:hidden真的失效了吗[转载]

    深入理解CSS溢出overflow http://www.cnblogs.com/xiaohuochai/p/5289653.html overflow:hidden真的失效了吗 http://www ...

  4. 深入理解css中的margin属性

    深入理解css中的margin属性 之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些“坑”的,下面我会介绍margin的基本知识以及 ...

  5. 深入理解css中position属性及z-index属性

    深入理解css中position属性及z-index属性 在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共 ...

  6. 深入理解CSS中的层叠上下文和层叠顺序

    零.世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈.比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上.再比如说话语权,老婆的话永远是对的,领导的话永远是对的. 在C ...

  7. 理解CSS居中

    我想很多在前端学习或者开发过程中,肯定会遇到如何让你的元素居中的问题,网上google肯定会有很多的解决方法.今天我就个人的项目与学习经验谈谈个人理解css如何让元素居中. 要理解css的居中,首先必 ...

  8. <转>HTML+CSS总结/深入理解CSS盒子模型

    原文地址:http://www.chinaz.com/design/2010/1229/151993.shtml 前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverf ...

  9. 认识和理解css布局中的BFC

    认识和理解css布局中的BFC BFC的定义 是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. Block Formatting Con ...

随机推荐

  1. H5实现摇一摇技术总结

    摇一摇遇到的问题 一.如何对摇晃效果进行反馈 刚开始的处理方式是,摇晃过程中不做任何处理,但后来反馈说这种效果不好,好像就没有摇动一样,如果声音也不响的话,就真的和什么都没发生一样. 后来想了想,加入 ...

  2. 关于textview显示特殊符号居中的问题

    话说这是2017年的第一篇博客,也是一篇技术博客.先从简单的一篇解决问题开始吧,千里之行,始于足下! ------------------------------------------------- ...

  3. ASP.NET Core 中间件之压缩、缓存

    前言 今天给大家介绍一下在 ASP.NET Core 日常开发中用的比较多的两个中间件,它们都是出自于微软的 ASP.NET 团队,他们分别是 Microsoft.AspNetCore.Respons ...

  4. ExtJS 4.2 组件介绍

    目录 1. 介绍 1.1 说明 1.2 组件分类 1.3 组件名称 1.4 组件结构 2. 组件的创建方式 2.1 Ext.create()创建 2.2 xtype创建 1. 介绍 1.1 说明 Ex ...

  5. C++ 11 多线程--线程管理

    说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段.并行是指两个或多个独立的操作同时进行.注意这里是同时进行,区别于并发,在一个时间段内执行多个操作.在单核时代,多个线程是并 ...

  6. 微信小程序开发日记——高仿知乎日报(下)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...

  7. cesium核心类Viewer简介

    1.简单描述Viewer Viewer类是cesium的核心类,是地图可视化展示的主窗口,cesium程序应用的切入口,扮演必不可少的核心角色. 官网的英文解析如下: A base widget fo ...

  8. 【Star CCM+实例】开发一个简单的计算流程.md

    流程开发在CAE过程中处于非常重要的地位. 主要的作用可能包括: 将一些经过验证的模型隐藏在流程中,提高仿真的可靠性 将流程封装成更友好的界面,降低软件的学习周期 流程开发实际上需要做非常多的工作,尤 ...

  9. Princeton Algorithms week3 Assignment

    这周编程作业是实现检测点共线的算法.和排序算法有关系的地方在于,对斜率排序后可以很快的检测出来哪些点是共线的,另外这个算法的瓶颈也在于排序的性能. 一点收获: java传参数时传递的是值,这很多人都知 ...

  10. CentOS 6.5安装Node.js, npm

    CentOS上可以通过下载*.tar.gz安装包的方式自己解压缩.编译的方式安装,同时还可以采用EPEL的方式安装: Node.js and npm are available from the Fe ...