css权威指南学习笔记--第七章

由于之前一直没有系统的看过css相关的书籍,导致自己css方面一直都是处于零散状态。知其然,不知其所以然。所以买了《css权威指南》。虽然比较老了,但是应该也会收获很大。

1 水平方向上

margin-left +border-left+padding-left+width+padding-right+border-right+margin-right

其中红色的是可以设置为auto,当设置为auto时,浏览器会自动计算该值。基于的原则就是

外层包裹容器的width=被包裹元素的width+padding+border+margin

     <div class="div1">
            <div class="div2"></div>
        </div>
.div1{background: red;width: 100px;height: 100px;}
.div2{width: auto;margin-left: 20px;margin-right:20px ;height: 50px;background: yellow;}

那么此时计算的width就是60px;也就是说我们固定其中任意两个值,第三个设置为auto,那么这个值可以被很容易的计算出来。当然如果设置margin-left:-30px;那么此时width就会等于110px;所以我们会看见,子容易溢出了。只有margin能设置负值,padding,border(百分比也不行)都不可以

当然如果只确定一个值,另外两个设置auto。这里面就有我们最常见的一句

margin:0 auto

确定个宽度,然后设置个这个就不说了。

width和一个margin(left或者right)设置为auto,另外一个margin(right或left)设置成定值。那么设置成auto的margin值会变成0。width就为剩余的空间值。

如果3个都设置为auto,那么margin都会设置成0;width会尽可能的宽。

如果3个值都是定值。例:margin-left:20px;width:20px;margin-right:20px;那么这种情况就是过分受限,因为此时margin-left+width+margin-right并不等于父容器的width(100px),那么会解析成margin-left:20px;width:20px;margin-right:60px;当然这是对于语言是从左向右的情况,如果是从右往左,则应该解析成margin-left:60px;width:20px;margin-right:20px;

2 垂直方向

垂直方向上  margin-top+border-top+padding-top+height+padding-bottom+border-bottom+margin-bottom

红色代表可以设置为auto值,但是我们并不能通过设置margin:auto 0;来达到垂直居中。关于垂直居中,这个已经是css中的老梗了,这里就不再叙述了。而是会解析成0。

height值可以设置成百分比,这个值就是相对于父容器高度的百分比。比如父容器height:100px;那么子容器设置height:10%;那么实际高度就是10px;当然如果父容器没有设置高度,那么子容器此时设置百分比是没有意义的,height是会重置为auto。

讲到垂直方向的margin,那么一定会讲到margin垂直方向上重合的现象,那么实际上这个是跟bfc的布局规则有关的,关于bfc块级格式化上下文,我会找个时间专门来写。那么也就有很多种防止这种状况的方法,但是要去理解为什么这样做可以,还是建议去看看bfc相关的文档。这样才能知其所以然。包括一些清除浮动的方法,为什么要这么写。后续会讲到。

下面将垂直方向上,div嵌套的情况。

如果块级正常元素的高度设置为auto,而且子元素全部为块级元素,其默认高度是从最高子元素的外边框边界到最低元素的外边框。注意这里这是外边框而不是外边距,所以如果此时子元素设置了垂直方向上的margin,那么会“超出”父容器。当然可以给父容器设置padding或者border,那么子元素的外边距就会被包含进来。

看下面这段代码,会不会发生margin合并

<div style="width: 100px;height: 100px;background: lightblue;margin-bottom: 40px;border: 4px solid;"></div>
<div style="width: 100px;height: 100px;background: lightcoral;margin-top: 20px;border: 4px solid;"></div>

答案是会的。

其实一般所说的加上padding或者border是用于外层的父容器上的。

     <div style="border: 4px solid;">
            <div style="width: 100px;height: 100px;background: lightblue;margin-bottom: 40px;"></div>
        </div>
        <div style="width: 100px;height: 100px;background: lightcoral;margin-top: 20px;border: 4px solid;"></div>

这样才是我所表达的意思,应该还是和bfc有关。

3 列表项

之前由于页面重构的少,也没有系统的学习css,问了一个很二的问题。为什么我把li标签的display:inlien-block后,前面的点怎么没有了。哎li标签的display默认为list-item改变了他的默认值。

有时候我们会发现前面的那个圆点好像和li不是一个整体,看着很不爽,怎么办,还有下面这种情况

        <ul>
            <li style="border: 1px solid;margin-top: 100px;width: 100px;overflow: hidden;">DJL箫氏DJL箫氏DJL箫氏DJL箫氏</li>
        </ul>

尤其是设置了overflow:hidden;那么不论内容是否溢出,前面的点都会被隐藏,很可能我们并不希望那个点消失,怎么办。那就设置list-style-position:inset就行,默认是outset。

行,先写到这里,明天继续。

时间: 2024-12-06 22:02:01

css权威指南学习笔记--第七章的相关文章

css权威指南学习笔记--第6章

line-height:定义文本行基线之间的距离 <p style="line-height: 20px;"> these are test words<br /> these are test words </p> 说到line-height就不能不说到行框中各个高度是怎么计算的,这里引用css权威指南中的图 文本行中的每个元素都会生成一个内容区,这由字体的大小确定.如果不存在其他因素(如line-height)那么这个内容区的高度就是行内框的高度

CSS权威指南学习笔记系列(1)CSS和文档

题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对,请谅解和指出.谢谢大家.正文: 第一章 CSS和文档---------- 1.CSS,称为层叠样式表.使用CSS的理由有:a.易于使用,样式表能大大减少Web创作人员的工作量:b.在多个页面上使用样式,可以创建一个样式表,然后把这个样式表应用到多个页面:c.层叠,CSS还规定了冲突规则:这些规则统称

CSS权威指南学习笔记 —— HTML元素分类

HTML文档由各种元素组成.比如,p.table.span等等.每个元素都会对文档的表现有所影响.CSS中,每个元素都会生成一个框(传说中的盒子),其中包含元素内容. 元素可以根据它的创建方式分为两种:替换元素和非替换元素.创建方式会对盒模型的表现有所影响,后续的笔记中会看到. 替换元素:这种元素的内容部分并非由文档直接显示,而是用其他内容来替换.最常见的替换元素img,它是由文档本身之外的一个图片文件来替换的.input也是替换元素,是根据类型的值来决定内容是什么,有时内容被替换成单选钮,有时

CSS权威指南学习笔记 —— 初步认识CSS

层叠样式表(Cascading Style Sheets,CSS)可以影响文档的表现.CSS是依附于文档的,如果不存在某种文档,CSS基本上是没有用的. 为什么会有CSS 在web早期(1990-1993),HTML由一些结构化元素组成,用于描述段落.超链接.列表和标题等.简单来说刚开始的时候,HTML是个非常有限的语言,并不关心外观,一篇文章,里面有一些超链接.大概张这个样子. 后来有了第一个图形浏览器Mosaic,把浏览网页的体验变得更好,各种网站就开始涌现了.然后人们对网页的需求也变得越来

css权威指南学习笔记

1,继承 一般大多数框模型属性都是不能继承的.如:padding .margin .border .background 都不能继承. 继承值,完全没有特殊性.(就是优先级最低) 2,缩进 text-indent: 属性 段落前空格.应用于块级元素 3,水平对齐: text-align   text-align:center 该属性只对元素中的内容进行位置的控制,标签<center>不仅控制内容位置,而且控制整个元素位置. 4,垂直对齐:  line-height,可应用于所有元素,可继承.

css权威指南阅读笔记-第三章声明的层级

有时候对同一个目标元素,选择器有多种不同的写法.具体哪种声明会生效,主要看层叠关系 层叠关系主要看三层,分别是特殊性,权重和顺序. 1.特殊性 选择器有各自的特殊性. 内联样式为1000,id选择器为100,class选择器和属性选择器为10,各个元素为1,通配选择器为0(0比没有大,继承的特殊性就是没有,所以有继承和通配同时出现,采用通配选择器).如 h1.box这个选择器的特殊性就是1+10=11. 当声明中有!important的时候,那么它的特殊性超过了内联样式. 继承的属性没有特殊性,

[权威指南]学习笔记——第5章 索引

for(i=0;i<100000;i++){     db.users.insert( {"i":i, "username":"user"+i, "age":Math.floor(Math.random()*120), "created":new Date()} );}explain()函数查看MongoDB在执行查询的过程中所做的事情,执行计划 建立索引db.users.ensureIndex({u

[权威指南]学习笔记——第6章 特殊的索引和集合

固定集合,大小固定的集合,其行为类似于循环队列,在碟式磁盘上的写入速度非常快.固定集合不能被分片,可以用于记录日志.一.创建固定集合createCollection函数db.createCollection("my_collection",{"capped":true,"size":100000,"max":100})必须指定大小,可以知道数量.固定集合创建之后,就不能改变了也可以通过convertToCapped命令实现某个

css权威指南学习笔记--列表与生成内容

列表属性 1.list-style-type:css2多于css2.1 2.list-style-image:有继承,子级列表会继承该图像 3.list-style-position:inside|outside|inherit   inside:列表符号在内容开始的地方,outside:列表符号单独列在列表内容的外面. 将前面三个属性合并:list-style ,有继承性,三个属性没有顺序要求,只有提供了一个值,其他值可以被忽略 例如:li {list-style:url(ji.gif) sq