WEB前端資源代碼:CSS篇

来源:https://www.cnblogs.com/moqiutao/archive/2018/10/29/9847953.html
-Advertisement-
Play Games

css3新單位vw、vh、vmin、vmax vh: 相對於視窗的高度, 視窗被均分為100單位的vh; vw: 相對於視窗的寬度, 視窗被均分為100單位的vw; vmax: 相對於視窗的寬度或高度中較大的那個。其中最大的那個被均分為100單位的vmax; vmin: 相對於視窗的寬度或高度中較小 ...


css3新單位vw、vh、vmin、vmax

vh: 相對於視窗的高度, 視窗被均分為100單位的vh;
vw: 相對於視窗的寬度, 視窗被均分為100單位的vw;

vmax: 相對於視窗的寬度或高度中較大的那個。其中最大的那個被均分為100單位的vmax;
vmin: 相對於視窗的寬度或高度中較小的那個。其中最小的那個被均分為100單位的vmin;
視區所指為瀏覽器內部的可視區域大小,
window.innerWidth/window.innerHeight大小,不包含任務欄標題欄以及底部工具欄的瀏覽器區域大小。

css3中calc動態計算元素長度

calc是英文單詞calculate(計算)的縮寫,是css3的一個新增的功能,用來指定元素的長度。比如說,你可以使用calc()給元素的border、margin、pading、font-size和width等屬性設置動態值。

註意點:

  • 用於動態計算長度值。
  • 需要註意的是,運算符前後都需要保留一個空格,例如:width: calc(100% - 10px);
  • 任何長度值都可以使用calc()函數進行計算;
  • calc()函數支持 “+”, “-“, “*”, “/” 運算;
  • calc()函數使用標準的數學運算優先順序規則;

例如:

calc(100vh - 10px)  表示整個瀏覽器視窗高度減去10px的大小
calc(100vw - 10px)   表示整個瀏覽器視窗寬度減去10px的大小

一般用來設置流式佈局寬高,當然,你可以使用calc()給元素的border、margin、pading、font-size和width等屬性設置動態值

詳細瞭解可參考:《CSS3 calc實現滾動條出現頁面不跳動》。

css3佈局:box-flex(伸縮盒最老版本

設置或檢索伸縮盒對象的子元素如何分配其剩餘空間。

<ul id="box">
    <li>a</li>
    <li>b</li>
    <li>c</li>
</ul>

CSS:

#box{display:box;width:240px;height:100px;margin:0;padding:10px;list-style:none;}
#box li:nth-child(1){box-flex:1;}
#box li:nth-child(2){box-flex:1;}
#box li:nth-child(3){box-flex:2;}

誤區:註意box-flex只是動態分配父元素的剩餘空間,而不是整個父元素的空間。

詳細可參考《CSS3佈局之box-flex的使用

css3佈局:flex

Flex是Flexible Box的縮寫,意為”彈性佈局”,用來為盒狀模型提供最大的靈活性。

任何一個容器都可以指定為Flex佈局。

例如:讓一個box盒子中的兩個p元素在box中平分寬度,並且垂直居中。如下代碼:

<div class="box">
    <p>這是一段內容1</p>
    <p>這是一段內容2</p>
</div>

css:

*{margin:0;padding:0;}
.box{
    background: #ccc;
    width:300px;
    height:200px;
    margin:30px auto;
    display: flex;
    align-items: center; /*在交叉軸上對齊方式-垂直居中*/
    justify-content: center;/*主軸上的對齊方式-水平居中*/
}
.box p{
    flex:1;
}
.box p:nth-child(1){background: red}
.box p:nth-child(2){background: blue}

效果如圖:

再看一個常用的例子:移動端使用flex讓內容平均分配

<nav>
  <a href="#">a</a>
  <a href="#">b</a>
  <a href="#">c</a>
</nav>

css代碼:

nav{display:-webkit-flex;display:flex;}
a{-webkit-flex:1;flex:1;}

容器的屬性:

1.flex-direction 決定主軸的方向(即項目的排列方向)

  • row(預設值):主軸為水平方向,起點在左端。
  • row-reverse:主軸為水平方向,起點在右端。
  • column:主軸為垂直方向,起點在上沿。
  • column-reverse:主軸為垂直方向,起點在下沿。

2.flex-wrap預設情況下,項目都排在一條線(又稱”軸線”)上。flex-wrap屬性定義,如果一條軸線排不下,如何換行。

  • nowrap(預設):不換行。
  • wrap:換行,第一行在上方。
  • wrap-reverse:換行,第一行在下方。

3.flex-flow:flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,預設值為row nowrap。

.box {
  flex-flow: <flex-direction> || <flex-wrap>;
}

4.justify-content:定義了項目在主軸上的對齊方式。

可能取5個值,具體對齊方式與軸的方向有關。下麵假設主軸為從左到右。

  • flex-start(預設值):左對齊
  • flex-end:右對齊
  • center: 居中
  • space-between:兩端對齊,項目之間的間隔都相等。
  • space-around:每個項目兩側的間隔相等。所以,項目之間的間隔比項目與邊框的間隔大一倍。

5.align-items:定義項目在交叉軸上如何對齊。

它可能取5個值。具體的對齊方式與交叉軸的方向有關,下麵假設交叉軸從上到下。

  • flex-start:交叉軸的起點對齊。
  • flex-end:交叉軸的終點對齊。
  • center:交叉軸的中點對齊。
  • baseline: 項目的第一行文字的基線對齊。
  • stretch(預設值):如果項目未設置高度或設為auto,將占滿整個容器的高度。

6.align-content:定義了多根軸線的對齊方式。如果項目只有一根軸線,該屬性不起作用。

  • flex-start:與交叉軸的起點對齊。
  • flex-end:與交叉軸的終點對齊。
  • center:與交叉軸的中點對齊。
  • space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈。
  • space-around:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
  • stretch(預設值):軸線占滿整個交叉軸。

 項目的屬性:

以下6個屬性設置在項目上。

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

1.order屬性

order屬性定義項目的排列順序。數值越小,排列越靠前,預設為0。

.item {
  order: <integer>;
}

2.flex-grow屬性

flex-grow屬性定義項目的放大比例,預設為0,即如果存在剩餘空間,也不放大。

.item {
  flex-grow: <number>; /* default 0 */
}

如果所有項目的flex-grow屬性都為1,則它們將等分剩餘空間(如果有的話)。如果一個項目的flex-grow屬性為2,其他項目都為1,則前者占據的剩餘空間將比其他項多一倍。

3.flex-shrink屬性

flex-shrink屬性定義了項目的縮小比例,預設為1,即如果空間不足,該項目將縮小。

.item {
  flex-shrink: <number>; /* default 1 */
}

如果所有項目的flex-shrink屬性都為1,當空間不足時,都將等比例縮小。如果一個項目的flex-shrink屬性為0,其他項目都為1,則空間不足時,前者不縮小。

負值對該屬性無效。

4.flex-basis屬性

flex-basis屬性定義了在分配多餘空間之前,項目占據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的預設值為auto,即項目的本來大小。

.item {
  flex-basis: <length> | auto; /* default auto */
}

它可以設為跟width或height屬性一樣的值(比如350px),則項目將占據固定空間。

5.flex屬性

flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,預設值為0 1 auto。後兩個屬性可選。

.item {
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

該屬性有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)。

建議優先使用這個屬性,而不是單獨寫三個分離的屬性,因為瀏覽器會推算相關值。

6.align-self屬性

align-self屬性允許單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性。預設值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同於stretch。

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

該屬性可能取6個值,除了auto,其他都與align-items屬性完全一致。

詳細參考:《Flex 佈局語法教程》

css3多列佈局:columns

columns語法:columns:[ column-width ] || [ column-count ]

其中:[ column-width ]:設置或檢索對象每列的寬度;[ column-count ]:設置或檢索對象的列數。

 

<h1>列數及列寬固定:</h1>
<div class="test">
    <p>This module describes multi-column layout in CSS. By using functionality described in this document, style sheets can declare that the content of an element is to be laid out in multiple columns. </p>
    <p>On the Web, tables have also been used to describe multi-column layouts. The main benefit of using CSS-based columns is flexibility; content can flow from one column to another, and the number of columns can vary depending on the size of the viewport. Removing presentation table markup from documents allows them to more easily be presented on various output devices including speech synthesizers and small mobile devices.</p>
</div>
<h1>列寬固定,根據容器寬度液態分佈列數:</h1>
<div class="test2">
    <p>This module describes multi-column layout in CSS. By using functionality described in this document, style sheets can declare that the content of an element is to be laid out in multiple columns. </p>
    <p>On the Web, tables have also been used to describe multi-column layouts. The main benefit of using CSS-based columns is flexibility; content can flow from one column to another, and the number of columns can vary depending on the size of the viewport. Removing presentation table markup from documents allows them to more easily be presented on various output devices including speech synthesizers and small mobile devices.</p>
</div>

 

CSS:

body{font:14px/1.5 georgia,serif,sans-serif;}
p{margin:0;padding:5px 10px;background:#eee;}
h1{margin:10px 0;font-size:16px;}
.test{
    width:628px;
    border:10px solid #000;
    -moz-columns:200px 3;
    -webkit-columns:200px 3;
    columns:200px 3;
}
.test2{
    border:10px solid #000;
    -moz-columns:200px;
    -webkit-columns:200px;
    columns:200px;
}

結果如圖所示:

以下列出column運用的常用相關屬性:

1.column-width<length> | auto 設置或檢索對象每列的寬度
如:-moz-column-width:200px;

2.column-count<integer> | auto 設置或檢索對象的列數
如:-webkit-column-count:3;

3.column-gap<length> | normal 設置或檢索對象的列與列之間的間隙
如:column-gap:normal;column-gap:40px;

4.column-rule[ column-rule-width ] || [ column-rule-style ] || [ column-rule-color ]設置或檢索對象的列與列之間的邊框。複合屬性。相當於border屬性
如:column-rule:10px solid #090;

5.column-spannone | all 設置或檢索對象元素是否橫跨所有列。
如:column-span:all;

 詳細參考:《CSS3佈局之多列佈局columns詳解

CSS相關題目

<div class="red blue">123</div>
<div class="blue red">123</div>

CSS:

.red {
    color: red
}

.blue {
    color: blue
}

結果為什麼:
答案:結果兩個div的顏色值顯示都為blue

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Android開發時常會遇到一些耗時的業務場景,比如後臺批量處理數據、訪問後端伺服器介面等等,此時為了保證界面交互的及時響應,必須通過線程單獨運行這些耗時任務。簡單的線程可使用Thread類來啟動,無論Java還是Kotlin都一樣,該方式首先要聲明一個自定義線程類,對應的Java代碼如下所示: 自 ...
  • 本文主要介紹了動畫的原理相關概念,對其他平臺的動畫做了一個簡要的梳理,並簡要的介紹了Flutter動畫的一些知識。 ...
  • 微信小程式如今已經是如火如荼,目前面對個人、企業都已經開放,主體類型為企業、政府、媒體、其他組織或個人的開發者,均可申請註冊小程式。下麵我們來認識一下微信小程式。 微信小程式有如下特點: 生於微信,自帶微信流量 微信目前用戶數已經突破10億,小程式在微信生態中目前已經有近百個入口,常見的分享給朋友、 ...
  • 一.我們先在XML當中自定義一個webview(Second_layout.xml) 代碼如下: 可以看到,這裡我們使用了現行佈局以及WebView控制項,tools:context=".SecondActivity"告訴我們這個控制項是定義在第二個主活動當中的。這個控制項的唯一標識符是:@+id/web ...
  • optional翻譯成漢語具有"可選的"的意思。顧名思義,!optional標記前面的擴展不必鬚生成一個新的選擇器。看一段SCSS代碼片段: 由於並不存在一個名為notice的樣式類,所以上述代碼會報錯。代碼修改如下: 由於是可選的,即便notice樣式類不存在也不會報錯。編譯結果如下: ...
  • JavaScript: 知識點回顧篇(三):js中的 String 對象的方法 ...
  • 由於我的項目個人博客網站需要用到線上編輯器,百度的ueditor編輯器就是一個很好的編輯器。開始比較迷茫的使用,各種百度,沒有我滿意的答案,明明可以很簡單的使用。 1.首先進入ueditor官網下載,這個很簡單吧!這裡可以下載: https://ueditor.baidu.com/website/d ...
  • 我的博客有訪客統計功能啦,看看實現的效果 原始計數代碼 <! 不蒜子計數 | 總訪問量 次 | 總訪客數 人 <! 不蒜子計數 修改後的代碼 加上設置的初始值20000, <! 不蒜子計數 | 總訪問量 次 | 總訪客數 人 <! 不蒜子計數 <! 不蒜子計數初始值糾正 $(document).re ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...