CSS 基础进阶

CSS2

引言:学习前端基础知识。第二课 CSS。

时间:2017年11月23日

作者:JustDo23

html_css_js

01. 三种布局模型

  1. 流动模型 Flow

    • 默认的网页布局模式
    • 块级元素以的形式,自上而下按顺序垂直延伸分布
    • 内联元素从左至右水平分布
  2. 浮动模型 Float

    <head>
      <style type="text/css">
        div {
          width: 70px;
          height: 30px;
          border: 10px solid red;
        }
    
        .divLeft {
          float: left;/*两个并排且靠左*/
        }
    
        .divRight {
          float: right;/*两个并排且靠右*/
        }
      </style>
    </head>
    
    <body>
      <div class="divLeft">靠左悬浮</div>
      <div class="divRight">靠右悬浮</div>
    </body>
    
    • 实现了两个块级元素在流动模型中并排一个靠左一个靠右的浮动模型
    css_float
  3. 模型 Layer

    层模型类似 PhotoShop 中的图层

    层模型三种定位方式:

    • 绝对定位 position: absolute
    • 相对定位 position: relative
    • 固定定位 position: fixed
  4. 层模型之绝对定位

    <head>
      <style type="text/css">
        .divHead {
          width: 300px;
          height: 2000px;
          border: 2px solid blue;
        }
    
        .divAbsolute {
          width: 50px;
          height: 50px;
          position: absolute;/*绝对定位*/
          border: 5px solid green;
          left: 50px;
          bottom: 10px;
        }
      </style>
    </head>
    
    <body>
      <div class="divAbsolute">左下角</div>
      <div class="divHead"></div>
    </body>
    
    • 将元素从文档流中拖出来,然后使用left right top bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。
    • 如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口
    • 元素将随body大小位置变化而改变。
    • 同时,元素会随这网页内容滑动而滑动
    css_absolute
  5. 层模型之相对定位

    <head>
      <style type="text/css">
        .divHead {
          width: 300px;
          height: 2000px;
          border: 2px solid blue;
        }
    
        .divRelative {
          width: 50px;
          height: 50px;
          border: 5px solid green;
          position: relative;/*相对定位*/
          left: 200px;
          top: 30px;
        }
      </style>
    </head>
    
    <body>
      <div class="divRelative"><span>偏移后</span></div>
      <div class="divHead"></div>
    </body>
    
    • 相对定位完成过程:首先将元素按 float 浮起来,然后使用left right top bottom属性确定元素在浮起位置的偏移位置。
    • 偏移前的位置保留不动,即后边元素相对偏移前的元素进行定位。
    • 元素将随着网页内容的滑动而滑动。
    css_relative
  6. 层模型之固定定位

    <head>
      <style type="text/css">
        .divFixed {
          width: 50px;
          height: 50px;
          border: 3px solid blue;
          position: fixed;/*固定定位*/
          right: 10px;
          bottom: 10px;
        }
      </style>
    </head>
    
    <body>
      <div class="divFixed">悬浮在右下角</div>
    </body>
    
    • 固定定位相对于浏览器窗口不随网页内容滑动改变,受浏览器窗口大小及位置影响。
    css_fixed
  7. 层模型之小结

    • absolute 相对于浏览器页面的绝对移动,不仅影响自身元素,还影响后续元素。
    • relative 相对于自己原先位置移动,影响自身元素,但不影响后续元素,可能会和后续元素重叠。
    • fixed 相对于浏览器窗口固定,用户滚动窗口时保持位置不变。

02. 相对某元素定位

<head>
  <style type="text/css">
    .divFather {
      width: 200px;
      height: 100px;
      border: 1px solid red;
      position: relative;/*父元素必须使用 relative */
    }

    .divChild {
      width: 90%;
      border: 1px solid blue;
      position: absolute;/*子元素必须使用 absolute */
      left: 5%;
      bottom: 5px;
    }
  </style>
</head>

<body>
  <div class="divFather">
    <div class="divChild">
      相对于父元素进行定位。定位在父元素底部。
    </div>
  </div>
</body>
css_examples

03. 开发技巧

  1. 缩写

    <head>
      <style type="text/css">
        p {
          margin: 5px;/*上右下左边距*/
          padding: 10px 20px;/*上下相等左右相等*/
          margin: 35px 45px 55px;/*上右下边距左等于右*/
    
          font-size: 12px;/*字体尺寸*/
          line-height: 1.5em;/*字体行高*/
          font: 12px/1.5em;/*两者简写*/
    
          color: red;/*颜色*/
          color: rgb(10, 200, 55);/*颜色RGB*/
          color: rgb(10%, 20%, 30%);/*百分比单位*/
          color: #336699;/*颜色十六进制*/
          color: #369;/*颜色十六进制简写*/
        }
      </style>
    </head>
    
    • 字体及边框及背景等的缩写类比
  2. 水平居中

    <head>
      <style type="text/css">
        .contentCenter {/*行内元素居中*/
          text-align: center;
        }
    
        .divCenter {/*定宽块级元素居中*/
          border: green solid 2px;
          width: 30%;
          margin-left: auto;
          margin-right: auto;
        }
    
        table {/*定宽块级*/
          margin: 0 auto;
        }
    
        .contentCenter div {/*不定宽度块级*/
          display: inline;
        }
    
        .divFather {/*不定宽度块级*/
          float: left;
          position: relative;
          left: 50%;
        }
        .divChild {
          position: relative;
          left: -50%;
          background: #CCC;
        }
      </style>
    </head>
    
    <body>
      <div class="contentCenter"><span>行内元素要居中</span></div>
      <div class="divCenter">定宽块级元素要居中</div>
      <table><tr><td>
            <div style="background-color: gray;">不定宽度块级元素利用 table 实现居中</div>
      </td></tr></table>
      <div class="contentCenter">
        <div style="border: pink solid 2px;">不定宽度块级元素变身行内元素并居中</div>
      </div>
      <div class="divFather">
        <div class="divChild">不定宽度块级元素通过悬浮和相对位置实现居中</div>
      </div>
    </body>
    
    css_horizontal_center
  3. 垂直居中

    <head>
      <style type="text/css">
        .verticalCenter {
          width: 300px;
          border: purple solid 2px;
          height: 60px;
          line-height: 60px;
        }
    
        table td {
          height: 60px;
          background: #ccc;
        }
      </style>
    </head>
    
    <body>
      <div class="verticalCenter">父元素高度确定单行文本垂直居中</div>
    
      <table><tr><td>
            <div>
              父元素高度确定多行文本<br>利用table标签默认属性"vertical-align:middle"实现垂直居中
            </div>
      </td></tr></table>
    </body>
    
    css_vertical_center
  4. 隐性改变 display 类型

    设置元素布局模型 position:absolutefloat:left|right 两者只要出现一个,元素的显示类型会自动变为 display:inline-block ,同时可以设置元素宽度,且宽度默认不占满符元素。

04. 小结

  • 在盒模型的基础上使用布局模型来进行各种布局排版
  • 注意实战
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345