(Frontend Newbie)Web三要素(二)
上一篇简单介绍了HTML的基本知识以及一些在开发学习过程中容易忽视的知识点,本篇介绍Web三要素中另一个重要组成部分----层叠样式表(Cascading Style Sheets)。
CSS
按照一贯的风格,先说说为什么会有CSS,即CSS的历史。
我们知道,在HTML产生之初是没有CSS的,实际上HTML只有简单的标签,搭配纯文本来描述一个文档。但是,随着Web的发展,HTML开始用来表现页面。人们结合使用字体和粗体标签来创建所需的视觉效果,而不只是用标题元素来突出显示页面的标题。表格成了一种布局工具,而不是显示数据的方式。这么做的结果就是,网页变得越来越有表现力,但是文档的含义却越来越模糊不清了,代码也越来越难以维护。为了解决这个问题,于是CSS诞生了。有了CSS,就可以控制文档的外观,并且将文档的表现部分与文档的内容分隔开。于是文档又有了意义。HTML与CSS职责清楚,分工明确,HTML表示是什么,CSS表示什么样。
下面我们说一说CSS的几个基本的知识点,通过这几个知识点,我们就能对CSS有一个基本的掌握。
盒模型
第一点必须是万年不变的盒模型啊。放一张W3 上盒模型的图。
通过上面这张图,我们就能清晰明了的明白盒模型的基本结构。
盒模型是CSS的基础,每个HTML元素最终都将通过盒模型被渲染到页面中去,每一个盒子都有content区域以及可选的padding、borde、margin区域。
对于盒模型的具体细节,请参考之前翻译的CSS中的盒模型一文,此处不再赘诉。
选择器
我们知道,一个HTML文档中包含很多的元素,也就是说,包含很多的盒子,我们可以给每个盒子应用样式。但是,在这些盒子中,总会有很多盒子有着类似的样式,我们没有必要给每一个盒子都写一遍样式。正常的思路则是将这些相同的样式抽取出来,组成公共的样式,然后再应用到每一个盒子上去。这时候就需要使用CSS的选择器了。
下图展示的CSS选择器的基本语法。
通过这些选择器和他们的组合,我们就能简单方便的控制页面的显示效果了。
更多关于CSS选择器的内容,请参考之前翻译的CSS中的选择器 一文,此处不再赘诉。
Position 和 Float
在了解了盒模型和选择器之后,我们知道了如何给元素添加样式,现在,我们知道如何控制这些元素显示在什么地方。
根据css 2.1中的描述,position和float的值决定了浏览器要采用哪种定位算法来计算元素盒子的具体位置。
关于position的说明,请参考之前的一片博文浅谈css中的position。
而对于float来说,我们只需要记住这九条规则,就能轻松掌握float的特性,并能运用自如。
- 向左浮动的盒子的外左边界不能超过包含块的左边界。同理应用于向右浮动的盒子。
- 对于一个向左浮动的盒子,如果在这个盒子之前还有其他向左浮动的盒子,那么,这个盒子的左外边界不能超过其他任何向左浮动的盒子的右外边界,或者这个盒子的上边界必须比其他盒子的下边界低。同理应用于向右浮动的盒子。
- 任何向左浮动的盒子的右外边界不能超过任何与之相邻的向右浮动的盒子的左外边界。同理应用于向右浮动的盒子。
- 浮动盒子的上外边界不能比包含块的上边界高。当浮动发生在两个合并的margin中时,浮动的盒子根据一个假设的父的空匿名块盒子定位。
- 浮动盒子的上外边界不能比任何其他之前的块盒子或浮动盒子的上外边界高。
- 浮动盒子的上外边界不能比任何之前的行盒子的上边界高。
- 一个向左浮动的盒子,如果在他之前还有向左浮动的盒子,那么这个盒子的右外边界不能超过包含块的有边界,除非这个盒子已经尽可能的向左了。同理应用于向右浮动的盒子。
- 浮动元素要尽可能的往高放置。
- 向左浮动的盒子要尽可能向左,向右浮动的盒子要尽可能向右。但是相对于尽可能向左或向右,更高的位置有更高的优先级。
更多关于position和float的详细内容,请参考之前翻译的CSS中的视觉格式化模型 一文。
小结
掌握了以上三点,基本可以面对正常的开发工作了,如果再能了解一些浏览器兼容性的问题,那在开发过程中就更加得心应手了。由于浏览器兼容性问题比较杂乱,后面有时间再单独整理。
(Frontend Newbie)Web三要素(二)的更多相关文章
- (Frontend Newbie) Web三要素(一)
上一篇简单了解了Web发展的简要历史,本篇简单介绍前端开发的基本三要素:HTML.CSS.JavaScript中的HTML以及一些在开发.学习过程中易被忽视的知识点. HTML HTML全称是超文本标 ...
- (Frontend Newbie)Web三要素(三)
上一篇简单介绍了Web三要素中的层叠样式表,本篇主要介绍三要素中最后一个,也是最难掌握的一个-----JavaScript. JavaScript 老规矩不能破,先简要交代 JavaScript 的历 ...
- web三要素
1.带动web的三驾马车 html5,css,javascript(js)就是带动web的三架马车,html是web的结构,css是web的样式,而js则是web的行为(即与用户的交互) 如果把htm ...
- WebService基础学习(二)—三要素
一.Java中WebService规范 JAVA 中共有三种WebService 规范,分别是JAX-WS.JAX-RS.JAXM&SAAJ(废弃). 1.JAX-WS规范 ...
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
Redis总结(五)缓存雪崩和缓存穿透等问题 前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...
- 移动web开发之屏幕三要素
× 目录 [1]屏幕尺寸 [2]分辨率 [3]像素密度 前面的话 实际上,并没有人提过屏幕三要素这个词,仅是我关于移动web开发屏幕相关部分总结归纳的术语.屏幕三要素包括屏幕尺寸.屏幕分辨率和屏幕像素 ...
- 第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用
第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理 使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置build_opener ...
- 第三百二十八节,web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术、设置用户代理
第三百二十八节,web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术.设置用户代理 如果爬虫没有异常处理,那么爬行中一旦出现错误,程序将崩溃停止工作,有异常处理即使出现错误也能继续执 ...
- 第三百二十七节,web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求
第三百二十七节,web爬虫讲解2—urllib库爬虫 利用python系统自带的urllib库写简单爬虫 urlopen()获取一个URL的html源码read()读出html源码内容decode(& ...
随机推荐
- 图的遍历——DFS
原创 图的遍历有DFS和BFS两种,现选用DFS遍历图. 存储图用邻接矩阵,图有v个顶点,e条边,邻接矩阵就是一个VxV的矩阵: 若顶点1和顶点5之间有连线,则矩阵元素[1,5]置1,若是无向图[5, ...
- XE下的FMX中压缩图片
用FMX压缩图片,发现FMX里的canvas没有draw,stretch,cliprect类,FMX里程序创建时会自动引用FMX.Graphics, 而这个单元内的TBitmap类的Canvas没有S ...
- 基于zookeeper实现高性能分布式锁
实现原理:利用zookeeper的持久性节点和Watcher机制 具体步骤: 1.创建持久性节点 zkLock 2.在此父节点下创建子节点列表,name按顺序定义 3.Java程序获取该节点下的所有顺 ...
- 苹果开发者账号提示“Unable to verify mobile phone number”的解决方案
在注册苹果开发者账号时,会提示:"Unable to verify mobile phone number.".顾名思义,没有有效的手机号码. 解决方案: 进入到Your Appl ...
- IO模型《二》阻塞IO
阻塞IO(blocking IO) 在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 当用户进程调用了recvfrom这个系统调用,kernel就开始 ...
- 深入 Nginx:我们是如何为性能和规模做设计的
NGINX 在网络应用中表现超群,在于其独特的设计.许多网络或应用服务器大都是基于线程或者进程的简单框架,NGINX突出的地方就在于其成熟的事件驱动框架,它能应对现代硬件上成千上万的并发连接. NGI ...
- spring框架所有包说明
spring依赖的jar包如下:下面是每个jar包的说明spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet ...
- c语言指针的简单实例
c语言的指针的存在使得c语言对硬件的操控,以及灵活性得到了极大的提高. 但是指针的使用存在着很多难点问题. #include<stdlib.h> #include<stdio.h&g ...
- POJ-1321-棋盘问题(深搜)
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65409 Accepted: 31227 Descriptio ...
- 对于Discuz 及PHP的一点个人感受
首先我知道PHP是一种编程语言,PHP这玩意灵活性够了,但总是让人感觉写出来的代码让人如坠五里雾中,一会一个变量,$什么,一会又一个$.对于它是什么类型我有时候结合上下文件,还能找得到,但是有的时候最 ...