发表于: 2018-05-14 23:56:32
1 602
今天完成的事情:编写任务12。
学习了解margin和padding深入知识。
使用@import引入scss文件。
了解常用语义化标签。
明天计划的事情:完成任内12,写任务总结。
遇到的问题:自我介绍居中不换行,设置
就号了,让他不收缩,
收获:
一些语义化标签
语义化HTML:用最恰当的HTML元素标记的内容。
优点:1 提升可访问性;
2 SEO;
3 结构清晰,利于维护;
(html5旧的行内元素都被归类为短语内容)
通用容器:div——块级通用容器;span——短语内容无语义容器。
如果语义不合适,也不要霸王硬上弓,=。。 =老实的用div吧。
< title></title>:简短、描述性、唯一(提升搜索引擎排名)。
搜索引擎会将title作为判断页面主要内容的指标,有效的title应该包含几个与页面内容密切相关的关键字,建议将title核心内容放在前60个字符中。
<hn></hn>:h1~h6分级标题,用于创建页面信息的层级关系。
对于搜索引擎而言,如果标题与搜索词匹配,这些标题就会被赋予很高的权重,尤其是h1。
<header></header>:页眉通常包括网站标志、主导航、全站链接以及搜索框。
也适合对页面内部一组介绍性或导航性内容进行标记。
<nav></nav>:标记导航,仅对文档中重要的链接群使用。
html5规范不推荐对辅助性页脚链接使用nav,除非页脚再次显示顶级全局导航、或者包含招聘信息等重要链接。
<main></main>:页面主要内容,一个页面只能使用一次。如果是web应用,则包围其主要功能。
<article></article>:包含像报纸一样的内容= =||是这么理解的,表示文档、页面、应用或一个独立的容器。
article可以嵌套article,只要里面的article与外面的是部分与整体的关系。
<section></section>:具有相似主题的一组内容,比如网站的主页可以分成介绍、新闻条目、联系信息等条块。
如果只是为了添加样式,请用div!
<aside></aside>:指定附注栏,包括引述、侧栏、指向文章的一组链接、广告、友情链接、相关产品列表等。
如果放在main内,应该与所在内容密切相关。
<footer></footer>:页脚,只有当父级是body时,才是整个页面的页脚。
<small></small>:指定细则,输入免责声明、注解、署名、版权。
只适用于短语,不要用来标记“使用条款”、“隐私政策”等长的法律声明。
<strong></strong>:表示内容重要性。
<em></em>:标记内容着重点(大量用于提升段落文本语义)。
<mark></mark>:突出显示文本(yellow),提醒读者。
在HTML5中em是表示强调的唯一元素,而strong则表示重要程度。
<b></b>:出于实用目的提醒读者的一块文字,不传达任何额外的重要性
<i></i>:不同于其他文字的文字= =|||这个翻译真的是······
<figure></figure>:创建图(默认有40px左右margin)。
<figcaption></figcaption>:figure的标题,必须是figure内嵌的第一个或者最后一个元素。
<cite></cite>:指明引用或者参考,如图书的标题,歌曲、电影、等的名称,演唱会、音乐会、规范、报纸、或法律文件等。
只用于参考源本身,而不是从中引述。
<blockquoto></blockquoto>:引述文本,默认新的一行显示。
<q></q>:短的引述(跨浏览器问题,尽量避免使用)。
可以对blockquoto和q元素使用cite属性(不是cite元素!),对搜索引擎自动化工具有用。cite=“URL”引述来源地址。
<time></time>:标记时间。datetime属性遵循特定格式,如果忽略此属性,文本内容必须是合法的日期或者时间格式。
不再相关的时间用s标签。
<abbr></abbr>:解释缩写词。使用title属性可提供全称,只在第一次出现时使用就ok。
abbr[title]{ border-bottom:1px dotted #000; }
<dfn></dfn>:定义术语元素,与定义必须紧挨着,可以在描述列表dl元素中使用。
<address></address>:作者、相关人士或组织的联系信息(电子邮件地址、指向联系信息页的链接)。
如果提供整个页面的作者联系信息,一般放在页面级footer里。不能包含文档或者文档等其他内容。
<del></del>:移除的内容。
<ins></ins>:添加的内容。
少有的既可以包围块级,又可以包围短语内容的元素。
<code></code>:标记代码。包含示例代码或者文件名 (< < > >)
<pre></pre>:预格式化文本。保留文本固有的换行和空格。
<meter></meter>:表示分数的值或者已知范围的测量结果。如投票结果。
例如:<meter value="0.2" title=”Miles“>20%completed</meter>
<progress></progress>:完成进度。可通过js动态更新value。
margin深入知识
百分比margin的计算规则
- 普通元素的百分比margin都是相对于容器的宽度计算的
<div style="width:600px;height:200px;">
<img src="1.jpg" style="margin:10%"></div>
- 1
- 2
- 3
计算之后水平方向的margin和垂直方向的margin都是60px
- 绝对定位元素的百分比margin是相对于第一个定位祖先元素(relative/absolute/fixed)的宽度计算的
<div style="width:600px;height:200px;">
<img src="1.jpg" style="margin:10%;position:absolute"></div>
- 1
- 2
- 3
计算之后水平方向的margin和垂直方向的margin都是102.4px,因为是根据第一个定位祖先元素计算的
css的margin重叠
margin重叠通常特性
- block水平元素,不包括float和absolute元素
- 不考虑writing-mode,只发生在垂直方向(margin-top和margin-bottom)
margin重叠的3种情况
1. 相邻的兄弟元素
p{ line-height: 2em; margin:1em 0; background: #ccc; }
- 1
- 2
- 3
- 4
- 5
<p>第一行</p>
<p>第二行</p>
- 1
- 2
第一行的margin-bottom和第二行的margin-top重叠,因此两个行之间只有1em的距离,并不是2em
2. 父级和第一个/最后一个子元素
.father{ background: #ccc; }
- 1
- 2
- 3
<div class="father">
<div class="son" style="margin-top: 80px;">我是son</div>
</div>
- 1
- 2
- 3
在子元素上添加margin-top:80px,并没有将父元素撑开,从效果图看,相当于直接在父元素上添加margin-top:80px,也相当于在子元素和父元素上都添加margin-top:80px,而这两个产生了重叠
父子margin重叠其他条件
margin-top重叠
- 父元素非块状格式化上下文元素(overflow:hidden)
- 父元素没有border-top设置
- 父元素没有padding-top值
- 父元素和第一个子元素之间没有inline元素分(
)
margin-bottom重叠
- 父元素非块状格式化上下文元素
- 父元素没有border-bottom设置
- 父元素没有padding-bottom设置
- 父元素和最后一个子元素之间没有inline元素分隔
- 父元素没有min-height、height、max-height限制
3. 空的block元素
.father{ background: #ccc; overflow:hidden; }
.son{ margin:1em 0;}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
<div class="father">
<div class="son" ></div>
</div>
- 1
- 2
- 3
空block元素只有图中的高度,从margin:1em 0;看子元素应该有上下外边距加起来2em,但是实际只有1em。
空block 元素margin重叠其他条件
- 元素没有border设置
- 元素没有padding设置
- 里面没有inline元素
- 没有height,或者min-height
margin重叠计算规则
1、正正取大值
2、正负值相加
3、负负最负值
相邻重叠绝对值最大的负值
父子重叠绝对值最大的负值自身重叠
css的margin:auto
元素如果没有设置width或height,会自动填充容器。
如果设置了width或height,自动填充就会被覆盖,此时的margin值是0px。
原本应该填充的尺寸被 width、height强制变更,而margin:auto
就是为了填充这个变更的尺寸设计的。
div{ width:100px; margin:0 auto;/*左右均auto,居中显示*/}
- 1
- 2
- 3
- 4
图片为何不居中???
img{ width:200px; margin:0 auto;}
- 1
- 2
- 3
- 4
因为此时图片是inline水平,就算没有width,也不会占据整个容器。
img{ display:block; width:200px;
margin:0 auto;}
- 1
- 2
- 3
- 4
- 5
此时图片是block水平,就算没有width,也会占据整个容器(不能一行显示)
无法垂直居中???
.father{ height:200px; background:#ccc;}.son{ height:100px; width:500px; background:#c00; margin:auto}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
水平方向能居中,但垂直方向无法居中。
假设.son没有设置高度height:100px,高度会自动200px高吗?—NO
writing-mode与垂直居中
.father{ height:200px; width:100%; background:#ccc; writing-mode:vertical-lr;}.son{ height:100px; width:500px; background:#c00; margin:auto}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
writing-mode会把文档流改为垂直方向,所以可以实现垂直居中,但是水平居中会失效。
绝对定位元素的margin:auto居中
.father{ height:200px;
background:#ccc;
position:relative;}.son{ position:absolute;/*没有width、height,absolute元素自动填满容器*/
top:0;
right:0;
bottom:0;
left:0}
//给绝对定位元素设置width,height,会限制absolute元素自动填满容器
.son{
position:absolute;
width:500px;
height:100px;
top:0;
right:0;
bottom:0;
left:0;
margin:auto;/* 此方法只适用于IE8+*/}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
css margin负值定位
- margin负值下的两端对齐–margin改变元素尺寸
- margin负值下的等高布局margin-bottom:-600px;padding-bottom:600px;
- margin负值下的两栏自适应布局
margin无效情形分析
- inline水平元素的垂直margin无效
两个前提:
1、非替换元素,不是<img>
元素
2、正常书写模式 - margin重叠
- display:table-cell/table-row等声明的margin无效
- 绝对定位元素非定位方向上的margin无效(实际是起作用的,是一直有效)
- 内联特性导致margin无效
https://blog.csdn.net/sjinsa/article/details/71000568
评论