草珊瑚的css基础
首先要了解如下概念:
viewport,窗口大小,containing block,block formatting context,inline formatting context,dirction和unicode-bidi,display和float以及postion的三者关系,盒子模型。
一.viewport
viewport是你所看到的窗口。它有两个重要属性,一个是css像素,另一个是设备像素。
设备像素由分辨率决定,css像素由开发者决定。
设备像素和css像素的关系有
1.重叠,即1css像素等于1设备像素。
2.缩小浏览器,一个设备像素覆盖多个css像素。
3.放大浏览器,一个css像素覆盖多个设备像素。
设置width=device-width之后,一个css像素会占用多个设备像素,从而感觉上网页放大了。占用计算方式是,css像素=设备像素/(device-width)。
二.窗口大小
浏览器窗口的大小,一种带滚动条,另一种不带滚动条。
不带滚动条的窗口宽高获取,document.documentElement.clientWidth和document.documentElement.clientHeight。
带滚动条的窗口宽高获取,window.innerWidth和window.innerHeight。
这些个属性获取到的是css像素。因此,当用户放大浏览器,一个css像素覆盖多个设备像素,用户能看到的CSS像素变少,所以window.innerWidth会变小
参考链接:两个viewport的故事
三.containing block
containing block(包含块)是,一个元素的盒模型的定位计算所依据的矩形(box)。
如果一个元素的’position’为’relative’或’static’,那么其包含块则是由最近的块级或单元格或行内块级元素的内容区创建。
如果一个元素’position’为’fixed’,那么其包含块为当前屏幕的可视窗口。
如果一个元素的’position’为’absolute’,那么其包含块则是最近的’position’为’relative’ 或’absolute’或 ‘fixed’的祖先元素,有如下几种情况:
->如果其祖先元素是行内元素,则包含块取决于其祖先元素的 “direction” 特性。
->其他情况下,如果祖先元素不是行内元素,那么包含块的区域应该是祖先元素的内边距边界。
详情看参考链接:smallni的包含块containing block和曹鹏的什么是CSS包含块(Containing Block)
四.block formatting context
BFC主要是用来计算包含浮动元素的元素宽高。
它的触发方式:
float:(任何值除了none)
overflow:(任何值除了visible)
display:(table-cell/table-caption/inline-block)
position:(任何值除了static/relative)
它的效果:
1.浮动元素参与高度的计算
2.与浮动元素相邻,不覆盖浮动元素
3.不会与它们的子元素发生外边距折叠
参考链接:smallni的hasLayout && Block Formatting Contexts
五.inline formatting context
有文字便有inline box,有inline box便有行框line boxes,有行框意味着它是在ifc里面。
1.行框的宽高计算:
浮动的文字在行框外面,即不参与行框的宽高计算。行框的高度由文字的大小决定,宽度由包含块containg block决定,会被浮动框隔断哦。
2.行内框的垂直对齐
当一个行内框的高度小于包含它的行框的高度时,在行框中垂直方向上的对齐决定于 'vertical-align' 特性。 'vertical-align' 默认值为基线( 'baseline' )对齐。
3.行内框在行框中水平方向上的对齐
取决于text-align属性。
参考链接:KB010: 常规流( Normal flow )
六.dirction和unicode-bidi
让文字倒着来,比如"例如strong为行内元素,行内元素可能会占多行,所以行内元素框可能由多行多个框组成。" 变成 "。成组框个多行多由能可框素元内行以所,行多占会能可素元内行,素元内行为gnorts如例"
设置unicode-bidi: bidi-override;direction: rtl;即可
七.display和float以及postion的三者关系
1. 'display' 的值为 'none'
如果 'display' 的值为 'none',那么 'position' 和 'float' 不起作用。在这种情况下,元素不产生框。因此浮动和定位无效。
2. 'position' 的值是 'absolute' 或 'fixed'
否则,如果 'position' 的值是 'absolute' 或 'fixed',框就是绝对定位的,'float' 计算后的值应该是 'none',并且,'display' 会被按照下表设置。 框的位置将由 'top','right','bottom' 和 'left' 属性和该框的包含块确定。
3. 'float' 的值不是 "none"
如果 'float' 的值不是 "none",该框浮动并且 'display' 会被按照转换对应表设置。
总结是:浮动或绝对定位的元素,只能是块元素或表格。
参考链接:KB009: CSS 定位体系概述 (那个图float的流程是错误的)
八.盒子模型
盒子模型就不说了,太多书籍解释这个。
需要注意的是
1.盒子的宽高是cotent+padding+border+margin
2.盒子的背景颜色和图像默认覆盖到content+padding+border
3.块级盒子兄弟的上下margin,父和第一个子元素margin-top会发生折叠。
参考:css彻底研究,写给大家看的css书,精通CSS:高级Web标准解决方案(第2版),精通CSS+DIV网页样式与布局
草珊瑚的css基础的更多相关文章
- 前端开发:css基础知识之盒模型以及浮动布局。
前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西? 为什么这个浮动没有效果? 这个问题楼主已经回答了n遍.今天则是把 ...
- CSS基础总结
CSS基础总结链接地址:http://segmentfault.com/a/1190000002773955
- CSS基础篇之了解CSS和它的基本属性
CSS是什么? CSS英文全名是Cascading Style Sheets翻译过来就是层叠样式表,它主是把网页表现与内容分离的一种样式设计语言.这种语言能优化我们编程,把东西简化和优化写法,而且不同 ...
- HTML5 -入门 (---css样式-------------(css基础与css选择器)---------------------—)
---恢复内容开始--- 一css基础入门与css选择器 CSS英文全拼:cascading style sheet 层叠样式表. 在html中使用:要在head中写style标签,所有样式放在sty ...
- css 基础---选择器
1.css基础 selector {property: value} eg: h1 {color:red; font-size:14px;} p { text-align: center; color ...
- 妙味课堂——HTML+CSS基础笔记
妙味课堂的课程讲得非常的清楚,受益匪浅.先把HTML和CSS基础课程部分视频的学习笔记记录如下: padding #PS基础 ##前端需要的PS技能 - PS技能(前端需要):切图.修图.测量 - P ...
- WEB前端开发CSS基础样式全面总结
Web前端开发css基础样式全面总结 颜色和单位的使用 颜色 用颜色的名字表示颜色,比如:red 用16进制表示演示 比如:#FF0000 用rgb数值表示颜色,rgb(红,绿,蓝),每个值都在0-2 ...
- css基础不扎实
写了两周的网页,发现自己的css基础还是很差的,当时培训学习的时候就发现了,我做的页面都特别的别扭和丑吧,在班级上应该是垫底的: 原先只知道用float,不会使用定位,网页连固定定位也不会,现在发现, ...
- css基础总结一
最近在弄一个简单管理系统的前端,所以打算将做项目的一些个人感想以及总结简单罗列下,当然,主要针对前端的基础部分以及一些常用的前端个人简单技巧总结.主要分为js部分和css部分,下面是css的基础部分总 ...
随机推荐
- PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能
PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能 网上很多正则表达式只能获取或者替换一个img的src内容,或者只能替换固定的字符串,要动态替换多个图片内容的试了几个小时 ...
- redis make test报错 Test replication partial resync: ok psync
更改 tests/integration/replication-psync.tcl 文件: vi tests/integration/replication-psync.tcl 把对应报错的那段代码 ...
- Spring的javaMail邮件发送(带附件)
项目中经常用到邮件功能,在这里简单的做一下笔记,方便日后温习. 首先需要在配置文件jdbc.properties添加: #------------ Mail ------------ mail.smt ...
- Linux计划任务,自动删除n天前的旧文件【转】
转自:http://blog.csdn.net/jehoshaphat/article/details/51244237 转载地址:http://yaksayoo.blog.51cto.com/510 ...
- 使用python脚本监控weblogic
1.python的脚本如下: ############################################################################### #crea ...
- C#中一个关于不同窗体间的颜色参数的传递
1目标是 在弹出菜单中选择颜色,在主菜单中对控件进行操作(弹出菜单选择的颜色就是主菜单控件的颜色) 2颜色属性需要来回转换(也许不用转换,暂时还不会,有会的提醒下,TKS) 3用到一个颜色控件(col ...
- c#调用c++的dll,错误篇
"LIPS.vshost.exe"(托管(v4.0.30319)): 已加载"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Sys ...
- [ios]纯代码实现UITableViewCell的自定义扩展
(转)参考:http://blog.sina.com.cn/s/blog_65cbfb2b0101cd60.html 第一种, 简单的增加UITableViewCell一些小功能 例如在cell上面添 ...
- ACM题目————Anagram
Description You are to write a program that has to generate all possible words from a given set of l ...
- weblogic远程调试
修改 bin/startWebLogic.cmd 增加红字部分,其中9999是调试监听端口,然后可以连接这个端口进行远程调试 set JAVA_DEBUG=-Xdebug -Xnoagent -Xru ...