发表于: 2018-05-14 23:56:32

1 602


今天完成的事情:编写任务12。

                           学习了解margin和padding深入知识。

                            使用@import引入scss文件。

                            了解常用语义化标签。 

  

明天计划的事情:完成任内12,写任务总结。


遇到的问题:自我介绍居中不换行,设置

flex-shrink: 0;

就号了,让他不收缩,


收获

一些语义化标签

 语义化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>:标记代码。包含示例代码或者文件名 (< &lt;  > &gt;)

        <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元素分(&nbsp;

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{    displayblock;    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



返回列表 返回列表
评论

    分享到