HTML5學習_番外篇_CSS3其他屬性

請各位讀者添加一下作者的微信公眾號,以后有新的文章,將在微信公眾號直接推送給各位,非常感謝。


二維碼.jpg

0.今日課程大綱

  • 服務器端字體: font-face
  • 輪廓: outline
  • 縮放屬性: resize
  • 分欄布局: column
  • 彈性布局: flex-box

1. 服務器端字體 font-face

我們在第三天CSS 樣式中,學習了一個屬性叫做 font-family,他的作用是定義你所使用的字體具體是哪一種,但是僅對有對應字體的電腦有效。例如常見的字體有宋體或者黑體等,這些我們的電腦一般系統自帶的字體庫中都會直接安裝好。

但是我們假如想更改一下字體什么的?讓我們的用戶看到的字體和我們在自己電腦上設置的字體是一樣的,那又該怎么做呢?

我們在這里介紹一個概念,就是服務器字體,屬性為 @font-face。它的作用是能夠加載服務器端的字體文件,讓客戶端顯示客戶端所沒有安裝的字體。那具體該怎么實現?

首先,你需要在網上下載你所需要的字體文件庫,放入你的 font(字體目錄,根據自己電腦情況來) 目錄中。

其次就是將下載的文件放入你的頁面中,這時候也就要用到我們的屬性 font-face了。

    @font-face{
        font-family:“你的web字體名稱”;
        src:url(“字體路徑”);
        font-weight:bold;
    }

來看看具體實現過程。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
        /*@font-face {
            font-family: "唐菜也體";
            src: url("fonts/FuturaBTLtIt.otf");
        }
        div{
            font-family: "唐菜也體";
            font-size: 50px;
        }*/
        @font-face{
            font-family: "郜慧姣體";
            src: url("fonts/FuturaBTHv.otf");
        }
        div{
            font-family: "郜慧姣體";
            font-size: 30px;
        }
        </style>
    </head>
    <body>
        <div>hello world!!</div>
    </body>
    </html>

2. 輪廓 outline

輪廓是繪制于元素周圍的一條線,,位于位置邊緣的外圍,可以起到突出元素的作用。

根據定義可以發現和邊框 border 是非常類似的一個東西。

border 的語法是 border 后面有三個屬性,分別是:

  1. 邊框顏色
  2. 邊框寬度
  3. 邊框類型

outline是圍繞元素。它是圍繞元素的邊距。但是,它是來自不同的邊框屬性。

outline不是元素尺寸的一部分,因此元素的寬度和高度屬性不包含輪廓的寬度

需要注意:

我在某網站上查詢,說是請始終在 outline-color 屬性之前聲明 outline-style 屬性。元素只有獲得輪廓以后才能改變其輪廓的顏色。 ,但是在實際的測試過程中,我發現網站給出的效果并沒有生效,無論你是在你 style 之前設置,還是之后設置,實際都會發生顏色的改變,當然也可能是我個人出錯,如果有讀者發現存在問題,請及時聯系我。

效果演示

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
        *{
            padding: 0;
            margin: 0;
        }
        div{
            width: 100px;
            height: 100px;
            border: 10px red solid;
            outline: dotted green 10px;
        }
        p{
            width: 50px;
            height: 50px;
            background: pink;
        }
        </style>
    </head>
    <body>
        <div></div>
        <p></p>
    </body>
    </html>

3. 縮放屬性 resize

我們可以通過給一個元素的寬度和高度去固定這個元素的大小,有時候我們需要去拉伸這個元素的寬度和高度。我們可以到源代碼中去改變他的寬度和高度,但是這樣顯得非常麻煩,那么我們該如何去在頁面中直接調節他的寬度和高度呢?

在 CSS3 中添加了一個新的屬性 resize ,它叫做 縮放屬性,它適用于所有元素,方便之處在于用戶可以直接到頁面中調節元素的寬度和高度。

屬性值 解釋
none 用戶不能調節元素的尺寸(默認值)
both 用戶可以調節元素的寬度和高度
horizontal 用戶可以調節元素的寬度
vertical 用戶可以調節元素的高度
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
        textarea{
            resize:both;
        }
        div{
            width: 100px;
            height: 100px;
            background-color: #ccc;
            resize: both;
        }
        </style>
    </head>
    <body>
        <textarea></textarea>
        <div></div>
    </body>
    </html>

我們給一個 textarea 元素還有一個 div 元素分別設置了resize:both 之后,按照語法來說,這兩個元素都可以進行拉伸,但實際上,只有 textarea 元素可以進行拉伸,而 div 元素卻不可以,原因是,除了 textarea 元素之外,其他元素想要使用縮放,必須設置 overflow 屬性(overflow:visible 除外)。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
        textarea{
            resize:both;
        }
        div{
            width: 100px;
            height: 100px;
            background-color: #ccc;
            resize: both;
            overflow: auto;
        }
        </style>
    </head>
    <body>
        <textarea></textarea>
        <div></div>
    </body>
    </html>

4. 分欄布局 column

在我們經常閱讀的報紙中,一般下一個版面會被分成多個列去進行排版,在 CSS3出臺之前,實現這個效果需要非常多的代碼,而CSS3規范中對多欄布局進行了定義,我們可以使用 CSS表單樣式輕松搞定這個效果。

屬性 解釋
column-count:number; 欄的數量控制
column-gap:長度單位; 欄與欄之間的距離
column-rule 寬度,顏色
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>分欄</title>
      <style type="text/css">
      body{
        /*設置分欄數*/
        -webkit-columns: 3;
        -moz-columns: 3;
        -o-columns: 3;
        columns: 3;
        /*設置間距 100px*/
        -webkit-column-gap: 100px;
        -moz-column-gap: 100px;
        -o-column-gap: 100px;
        column-gap: 100px;
        /*設置分欄間隔線*/
        -webkit-column-rule: 10px solid red;
        -moz-column-rule: 10px solid red;
        -o-column-rule: 10px solid red;
        column-rule: 10px solid red;
      }
      div{
        height: 50px;
        margin-top: 10px;
        background-color: cyan;
      }
      </style>
    </head>
    <body>
        <div>我是divA</div>
        <div>我是divB</div>
        <div>我是divC</div>
    </body>
    </html>

但是我們發現,隨著我們將窗口去拉伸,我們的 column-rule還停留在原位置,需要重新刷新才能適應界面,這是我們現在不好解決的,所以接下來要介紹另外一種布局方式,彈性布局。

5. 彈性布局 flex-box

引用一下別人打得比方,“box-flex”直譯為“房子-分配”,假如馬林大叔省吃儉用一輩子,終于在上海郊外買了間150平米的商品房。后來,馬林大叔想回老家養老,決定把房子分配給他的三個兒子。

ok,先暫停下,這里提到的“房子”就是”box-flex”中的”box”,“分配”就是”box-flex”中的”flex”,于是,這個“分配房子”的舉動就稱為”box-flex”,而box-flex屬性的值就是說的如何分配,分配比例是什么。

繼續我們的例子,馬林大叔的三個兒子分別叫做大馬,中馬和小馬,其中大馬已經結婚多年,有一堆雙胞胎女兒,拖家帶口的人多;而中馬和小馬是優秀的光棍人士。

所以,大馬要求分配更多的房子,最終,家人一番協商有了下面的分配結果,就是:

    #大馬 { 房子-分配: 2; }
    #中馬 { 房子-分配: 1; }
    #小馬 { 房子-分配: 1; }

如果裝換成CSS表示就是:

    #first_boy { box-flex: 2; }
    #second_boy { box-flex: 1; }
    #three_boy { box-flex: 1; }

box-flex的含義與作用理解瞬間柳暗花明:用來按比例分配父標簽的寬度(或高度)空間。

box-flex的值為至少為1的整數時起作用。但是,僅僅一個box-flex屬性是不足以實現子元素間的空間分配,因為還要看其老爸的意思。

只有父元素同意了,幾個孩子才能分配這房子,所以,父元素中也是需要添加聲明的,體現在代碼中就是:

    #father { display: box; }

display: box;的聲明其實就是彈性盒模型的聲明。

我們試著將上面的案例寫成代碼:

彈性布局1.html

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style type="text/css">
                *{
                    padding: 0;
                    margin: 0;
                }
                .father{
                    display: box;
                    display: -webkit-box;
                    display: -moz-box;
                    display: -o-box;
                }
                .one{
                    box-flex:2;
                    -webkit-box-flex:2;
                    -moz-box-flex:2;
                    -o-box-flex:2;
                    background: red;
                }
                .two{
                    background: pink;
                }
                .three{
                    background: blue;
                }
                .two,.three{
                    box-flex:1;
                    -webkit-box-flex:1;
                    -moz-box-flex:1;
                    -o-box-flex:1;
                }
            </style>
        </head>
        <body>
            <div class="father">
                <div class="son one">11111</div>
                <div class="son two">22222</div>
                <div class="son three">33333</div>
            </div>
        </body>
    </html>

上面的案例是三個子元素按照一定的比例去分配父元素的寬度,接下來再來看第二個案例,

當第一個頭元素和最后一個尾部元素給了固定的高度之后,中間的內容元素如何自適應屏幕的高度,

使得三個子元素占據滿屏的高度。

彈性布局2.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>彈性布局</title>
      <style type="text/css">
        *{
          margin: 0px;
          padding: 0px;
        }
        body,html,.wrap{
          height: 100%;
        }
        .wrap{
          /*開啟彈性盒子 讓子元素彈性自適應布局*/
          display: -webkit-box;
          /*彈性布局盒子中 子元素的排列方式(橫向或者豎向)horizontal(默認橫向)*/
          -webkit-box-orient:vertical;
          /*翻轉 子元素的排列順序*/
          -webkit-box-direction:reverse;
        }
        .header{
          height: 100px;
          background-color: cyan;
        }
        .content{
          background-color: #ccc;
          /*占據剩余的空間*/
          -webkit-box-flex:2;
        }
        .footer{
          height: 100px;
          background-color: orange;
        }
      </style>
    </head>
    <body>
          <div class="wrap">
              <div class="header">頭部</div>
              <div class="content">內容</div>
              <div class="footer">底部</div>
          </div>
    </body>
    </html>

當然,除了按比例分配父元素的寬度或者高度之后,我們還有一些其他的屬性。這里不做更多介紹。

屬性 含義
box-orient 子元素的方向,默認是橫排(horizontal:橫著排;vertical:豎著排。)
box-direction 子元素的排列順序,默認是正常(normal:正常;reverse:反轉。)
box-align 子元素在垂直方向上的對齊表現(start 、end、center)
box-pack 子元素在水平方向上的對齊表現(start、end、center)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,431評論 2 378

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,780評論 1 92
  • 移動開發基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,503評論 0 6
  • H5移動端知識點總結 閱讀目錄 移動開發基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,597評論 0 26
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 1,787評論 0 2
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,326評論 0 11