css知識筆記(五)——css樣式設置小技巧

水平居中設置-行內元素

如果被設置元素為文本圖片行內元素時,水平居中是通過給父元素設置?text-align:center?來實現的。如下代碼:

html代碼:

<body><div class="txtCenter">我是文本,哈哈,我想要在父容器中水平居中顯示。</div>
</body>

css代碼:

<style>div.txtCenter{text-align:center;}
</style>

水平居中設置-定寬塊狀元素

當被設置元素為塊狀元素時用 text-align:center 就不起作用了,這時也分兩種情況:定寬塊狀元素和不定寬塊狀元素。

第一種方法:滿足定寬塊狀兩個條件的元素是可以通過設置左右margin”值為“auto”來實現居中的。我們來看個例子就是設置?div?這個塊狀元素水平居中:

html代碼:

<body><div>我是定寬塊狀元素,哈哈,我要水平居中顯示。</div>
</body>

css代碼:

<style>
div{border:1px solid red;/*為了顯示居中效果明顯為 div 設置了邊框*/ width:500px;/*定寬*/margin:20px auto;/* margin-left 與 margin-right 設置為 auto */
}
</style>

也可以寫成:

margin-left:auto;
margin-right:auto;

注意:元素的“上下 margin” 是可以隨意設置的。

第二種方法:改變塊級元素的 dispaly 為 inline 類型,然后使用 text-align:center 來實現居中效果。如下例子:

html代碼:

<body>
<div class="container"><ul><li><a href="#">1</a></li><li><a href="#">2</a></li><li><a href="#">3</a></li></ul>
</div>
</body>

css代碼:

<style>
.container{text-align:center;
}
.container ul{list-style:none;margin:0;padding:0;display:inline;
}
.container li{margin-right:8px;display:inline;
}
</style>

這種方法相比第一種方法的優勢是不用增加無語義標簽,簡化了標簽的嵌套深度,但也存在著一些問題:它將塊狀元素的 display 類型改為 inline,變成了行內元素,所以少了一些功能,比如設定長度值。

方法三:通過給父元素設置 float,然后給父元素設置 position:relative 和 left:50%,子元素設置 position:relative 和 left:-50% 來實現水平居中。

代碼如下:

<body>
<div class="container"><ul><li><a href="#">1</a></li><li><a href="#">2</a></li><li><a href="#">3</a></li></ul>
</div>
</body>

css代碼:

<style>
.container{ float:left;position:relative;left:50%
}.container ul{list-style:none;margin:0;padding:0; position:relative;left:-50%;
}
.container li{float:left;display:inline;margin-right:8px;}
</style>

這種方法可以保留塊狀元素仍以 display:block 的形式顯示,優點不添加無語議表標簽,不增加嵌套深度,但它的缺點是設置了 position:relative,帶來了一定的副作用。

這三種方法使用得都非常廣泛,各有優缺點,具體選用哪種方法,可以視具體情況而定。

垂直居中-父元素高度確定的單行文本

父元素高度確定的單行文本的豎直居中的方法是通過設置父元素的?height?和?line-height?高度一致來實現的。如下代碼:

<div class="container">hi,imooc!
</div>

css代碼:

<style>
.container{height:100px;line-height:100px;background:#999;
}
</style>

垂直居中-父元素高度確定的多行文本

父元素高度確定的多行文本圖片塊狀元素的豎直居中的方法有兩種:

方法一:使用插入 table (包括tbody、tr、td)標簽,同時設置 vertical-align:middle。

說到豎直居中,css 中有一個用于豎直居中的屬性 vertical-align,但這個樣式只有在父元素為 td 或 th 時,才會生效。所以又要插入 table 標簽了。下面看一下例子:

html代碼:

<body>
<table><tbody><tr><td class="wrap">
<div><p>看我是否可以居中。</p><p>看我是否可以居中。</p><p>看我是否可以居中。</p><p>看我是否可以居中。</p><p>看我是否可以居中。</p>
</div>
</td></tr></tbody></table>
</body>

css代碼:

table td{height:500px;background:#ccc}

因為 td 標簽默認情況下就默認設置了 vertical-align 為 middle,所以我們不需要顯式地設置了。

?方法二在 chrome、firefox 及 IE8 以上的瀏覽器下可以設置塊級元素的 display 為 table-cell,激活 vertical-align 屬性,但注意 IE6、7 并不支持這個樣式

html代碼:

<div class="container"><div><p>看我是否可以居中。</p><p>看我是否可以居中。</p><p>看我是否可以居中。</p><p>看我是否可以居中。</p><p>看我是否可以居中。</p></div>
</div>

css代碼:

<style>
.container{height:300px;background:#ccc;
    display:table-cell;/*IE8以上及Chrome、Firefox*/vertical-align:middle;/*IE8以上及Chrome、Firefox*/
}
</style>

這種方法的好處是不用添加多余的無意義的標簽,但缺點也很明顯,它的兼容性不是很好,不兼容 IE6、7。

隱性改變display類型

有一個有趣的現象就是當為元素(不論之前是什么類型元素,display:none 除外)設置以下 2 個句之一:

  1. position : absolute
  2. float : left 或 float : right

元素會自動變為以?display:inline-block?的方式顯示,當然就可以設置元素的 width 和 height 了且默認寬度不占滿父元素。

如下面的代碼,a 標簽是行內元素,所以設置它的 width 是 沒有效果的,但是設置為 position:absolute 以后,就可以了。

<div class="container"><a href="#" title="">進入課程請單擊這里</a>
</div>

css代碼

<style>
.container a{position:absolute;width:200px;background:#ccc;
}
</style>

————————————————————————————————————————————————————————————————————————————

以上內容參考自慕課網:http://www.imooc.com

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386131.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386131.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386131.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTML如何添加錨點,干貨滿滿

前言 昨天有幸去字節面試了&#xff0c;順便拿到了offer&#xff0c;把還記得的東西寫下來&#xff0c;供大家參考一下。 CSS篇 讓一個元素水平垂直居中&#xff0c;到底有多少種方案&#xff1f;浮動布局的優點&#xff0c;缺點&#xff1f;清除浮動的方式&#xff1f;使用di…

JavaScript知識筆記(一)——入門、語句、注釋、變量、函數、輸出內容、對話框、窗口

JavaScript可以提供漂亮的網頁、令用戶滿意的上網體驗。 1.增強頁面動態效果(如:下拉菜單、圖片輪播、信息滾動等) 2.實現頁面與用戶之間的實時、動態交互(如:用戶注冊、登陸驗證等) 引用JavaScript&#xff1a; 一、使用<script>標簽在HTML文件中添加JavaScript代碼&am…

HTML如何添加錨點,總結到位

標簽語義化&#xff1a; 語義和默認樣式的區別&#xff1a; 默認樣式是瀏覽器設定的一些常用tag的表現形式&#xff1b;語義化的主要目的就是讓大家直觀的認識標簽和屬性的用途和作用&#xff1b; 標簽語義化作用&#xff1a; 當只有HTML頁面時&#xff0c;沒有CSS&#xf…

JavaScript知識筆記(二)——事件

事件&#xff1a; JavaScript 創建動態頁面。事件是可以被 JavaScript 偵測到的行為。 網頁中的每個元素都可以產生某些可以觸發 JavaScript 函數或程序的事件。 比如說&#xff0c;當用戶單擊按鈕或者提交表單數據時&#xff0c;就發生一個鼠標單擊&#xff08;onclick&#x…

HTML如何添加錨點,我先收藏為敬

背景 我18年本科畢業&#xff0c;年前已有換工作想法&#xff0c;一直沒有付諸行動&#xff0c;疫情爆發后回到老家&#xff0c;年后開始找工作&#xff0c;對于自己水平不是很清楚&#xff0c;之前找工作一直都挺順利的。大學畢業沒有留在實習單位繼續做前端開發&#xff0c;…

JavaScript知識筆記(三)——內置對象、瀏覽器對象

內置對象&#xff1a; &#xff08;與Java很像&#xff09;JavaScript 中的所有事物都是對象&#xff0c;如:字符串、數值、數組、函數等&#xff0c;每個對象帶有屬性和方法。 對象的屬性&#xff1a;反映該對象某些特定的性質的&#xff0c;如&#xff1a;字符串的長度、圖像…

HTML如何添加錨點,文末領取面試資料

開始 我大學讀的是大專&#xff0c;在學校學的是機電一體化。臨近畢業的時候選擇了學習web前端技術&#xff0c;因為做機電實在又累工資又低&#xff0c;而我更喜歡坐辦公室的工作&#xff0c;有空調吹&#xff0c;我很現實&#xff0c;就是想多賺一點錢。到現在做了兩年前端的…

HTML如何添加錨點,論程序員成長的正確姿勢

前言 年前準備換工作&#xff0c;總結了一波面試最頻繁的面試問題跟大家交流。此文章是關于瀏覽器的常見問題&#xff0c;大概面試10家遇到6家提問類似問題&#xff08;主要是大廠和中廠&#xff09;。目前入職滴滴出行成都團隊。 css盒模型 1&#xff0c;css盒模型基本概念…

DOM(文檔對象模型)

文檔對象模型DOM&#xff08;Document Object Model&#xff09;定義訪問和處理HTML文檔的標準方法。 DOM 將HTML文檔呈現為帶有元素、屬性和文本的樹結構&#xff08;節點樹&#xff09;。 先來看看下面代碼: 將HTML代碼分解為DOM節點層次圖: HTML文檔可以說由節點構成的集合&…

HTML實體字符列表,總結到位

前言 每年畢業季都能聽到很多報道說大學畢業生找工作難&#xff0c;以前看到這類新聞一直覺得無所謂。因為總覺得離我還早&#xff0c;但今年輪到我畢業了&#xff0c;才發現不幸終于降臨到我的頭上。 簡歷 首先肯定是要準備一份自己的簡歷&#xff0c;簡歷經常是給面試官的第…

java實現矩陣相乘

眾所周知&#xff0c;矩陣的乘法就是矩陣的行列相乘再相加。話不多說&#xff0c;直接上代碼&#xff1a; package test;public class matrixMultiply {public static void printMatrix(int[][] a, int[][] b) {int r a.length;int c b[0].length;double result[][] new dou…

你必須知道的CSS盒模型,面試建議

什么是HTML? HTML: ( Hypertext Markup Language )超文本標記語言&#xff0c;是一種標識性的語言。它包括一系列標簽&#xff0e;通過這些標簽可以將網絡上的文檔格式統一&#xff0c;使分散的Internet資源連接為一個邏輯整體。 特點: 簡易性&#xff1a;超級文本標記語言版…

你必須知道的CSS盒模型,順利通過阿里面試

前言 正式學習前端大概 3 年多了&#xff0c;接觸前端大概 4 年了&#xff0c;很早就想整理這個書單了&#xff0c;因為常常會有朋友問&#xff0c;前端該如何學習&#xff0c;學習前端該看哪些書&#xff0c;我就講講我學習的道路中看的一些書&#xff0c;雖然整理的書不多&a…

java中的幾種泛型類——HashSet、HashMap、TreeSet、TreeMap,遍歷map,排序,HashTable比較

HashSet HashSet<E>泛型類在數據組織上類似于數學上的集合&#xff0c;可以進行“交”、“并”、“差”等運算。HashSet<E>泛型類創建的對象稱為集合&#xff0c;如&#xff1a;HashSet<E> set HashSet<String>();那么set就是一個可以存儲string類型…

保駕護航金三銀四,100%好評!

前端的興起 前端真正興起和開始頻繁出現在大家的視線里&#xff0c;大概是在十年前。彼時的 Web 開發基本是由后端主導&#xff0c;前端能做的只是校驗一下數據、操作一下 DOM。&#xff08;其中數據檢驗是 JS 產生的根本原因&#xff1a;當時網絡太慢&#xff0c;在服務端檢驗…

java連接mysql數據庫(JDBC),存到二維數組里并輸出

java連接mysql數據庫都有固定的操作&#xff0c;步驟如下&#xff1a; 加載mysql驅動&#xff0c;一般都是com.mysql.jdbc.Driver。提供JDBC連接的URL。 創建數據庫的連接。要連接數據庫&#xff0c;需要向java.sql.DriverManager請求并獲得Connection對象。 創建一個Statem…

保駕護航金三銀四,萬字解析!

從事前端開發工作差不多3年了&#xff0c;自己也從一個什么都不懂的小白積累了一定的理論和實踐經驗&#xff0c;并且自己也對這3年來的學習實踐歷程有一個梳理&#xff0c;以供后面來細細回憶品味。 1、為什么選擇學習前端開發&#xff1f; 你可能是因為興趣&#xff0c;完成…

數據降維技術——PCA(主成分分析)

為什么要對數據進行降維&#xff1f; 在機器學習或者數據挖掘中&#xff0c;我們往往會get到大量的數據源&#xff0c;這些數據源往往有很多維度來表示它的屬性&#xff0c;但是我們在實際處理中只需要其中的幾個主要的屬性&#xff0c;而其他的屬性或被當成噪聲處理掉。比如&a…

保駕護航金三銀四,使用指南

前言 作為一個程序員&#xff0c;當然總是期望自己的代碼能「一次編寫&#xff0c;四處運行」&#xff0c;但真實經驗往往是「一處修改&#xff0c;百處填坑」&#xff0c;依賴落后了好幾個版本了想要升級、老代碼已經看著很不爽了打算重構&#xff0c;都需要下堅決的決心&…

社交網絡初探——鏈路預測

社交網絡可以用來描述現實社會中的實際網絡&#xff0c;它包括人與人之間的社會關系&#xff0c;物種之間的捕食關系&#xff0c;科學研究中的合作關系等。大量研究已經表明在真實世界中各種不同社交網絡具有許多共同的結構特征&#xff0c;例如小世界性質、無標度性、社團結構…