首頁 web前端 html教學 HTML和CSS重點困難問題

HTML和CSS重點困難問題

Feb 28, 2018 am 11:14 AM
css html

本文主要和大家分享HTML和CSS重點難點問題,希望能幫助大家。

1.怎麼讓不定寬高的p,垂直水平居中?

使用Flex

#只需要在父盒子設定:display: flex; justify-content: center;align-items: center;
使用CSS3 transform

父盒子設定:display:relative
p 設定: transform: translate(- 50%,-50%);position: absolute;top: 50%;left: 50%;
使用display:table-cell 方法

父盒子設定:display:table-cell; text- align:center;vertical-align:middle;
p 設定: display:inline-block;vertical-align:middle;
2.position 幾個屬性的作用

position 的常見四個屬性值: relative,absolute,fixed,static。一般都要配合”left”、“top”、“right” 以及 “bottom” 屬性使用。

static:預設位置。 在一般情況下,我們不需要特別的去聲明它,但有時候遇到繼承的情況,我們不願意見到元素所繼承的屬性影響本身,從而可以用Position:static取消繼承,即還原元素定位的預設值。設定為 static 的元素,它總是會處於頁面流給予的位置(static 元素會忽略任何 top、 bottom、left 或 right 宣告)。一般不常用。
relative:相對定位。 相對定位是相對於元素預設的位置的定位,它偏移的 top,right,bottom,left 的值都以它原來的位置為基準偏移,而不管其他元素會怎麼樣。注意 relative 移動後的元素在原來的位置仍佔據空間。
absolute:絕對定位。 設定為 absolute 的元素,如果它的 父容器設定了 position 屬性,並且 position 的屬性值為 absolute 或 relative,那麼就會依據父容器進行偏移。如果其父容器沒有設定 position 屬性,那麼偏移是以 body 為依據。注意設定 absolute 屬性的元素在標準流中不佔位置。
fixed:固定定位。 位置被設定為 fixed 的元素,可定位於相對於瀏覽器視窗的指定座標。不論窗口滾動與否,元素都會留在那個位置。它總是以 body 為依據的。 注意設定 fixed 屬性的元素在標準流中不佔位置。
3.浮動與清除浮動

3.1 浮動相關知識

float屬性的取值:

left:元素向左浮動。
right:元素向右浮動。
none:預設值。元素不浮動,並會顯示在文字中出現的位置。
浮動的特性:

浮動元素會從普通文件流中脫離,但浮動元素影響的不僅是自己,它會影響周圍的元素對齊進行環繞。
不管一個元素是行內元素還是區塊級元素,如果被設定了浮動,那麼浮動元素會產生一個區塊級框,可以設定它的width和height,因此float常常用於製作橫向配列的選單,可以設定大小並且橫向排列。
浮動元素的展示在不同情況下會有不同的規則:

浮動元素在浮動的時候,其margin不會超過包含區塊的padding。 PS:如果想要元素超出,可以設定margin屬性
如果兩個元素一個向左浮動,一個向右浮動,左浮動元素的marginRight不會和右浮動元素的marginLeft相鄰。
如果有多個浮動元素,浮動元素會依序排下來而不會發生重疊的現象。
如果有多個浮動元素,後面的元素高度不會超過前面的元素,並且不會超過包含區塊。
如果有非浮動元素和浮動元素同時存在,並且非浮動元素在前,則浮動元素不會高於非浮動元素
浮動元素會盡可能地向頂端對齊、向左或向右對齊
重疊問題

行內元素與浮動元素重疊,其邊框,背景和內容都會顯示在浮動元素之上
區塊級元素與浮動元素發生重疊時,邊框和背景會顯示在浮動元素之下,內容會顯示在浮動元素之上
clear屬性
clear屬性:確保目前元素的左右兩側不會有浮動元素。 clear只對元素本身的佈局運作。
取值:left、right、both

3.2 父元素高度塌陷問題

為什麼要清除浮動,父元素高度塌陷
解決父元素高度塌陷問題:一個區塊級元素如果沒有設定height,其height是由子元素撐開的。對子元素使用了浮動之後,子元素會脫離標準文檔流,也就是說,父級元素中沒有內容可以撐開其高度,這樣父級元素的height就會被忽略,這就是所謂的高度塌陷。

3.3 清除浮動的方法

方法1:給父級p定義高度
原理:給父級p定義固定高度(height),能解決父級p 無法取得高度得問題。
優點:程式碼簡潔
缺點:高度被固定死了,是適合內容固定不變的模組。 (不建議使用)

方法二:使用空元素,如


(.clear{clear:both})
原理:新增一對空的p標籤,利用css的clear:both屬性清除浮動,讓父級p能取得高度。
優點:瀏覽器支援好
缺點:多出了很多空的p標籤,如果頁面中浮動模組多的話,就會出現很多的空置p了,這樣感覺視乎不是太令人滿意。 (不建議使用)

方法三:讓父級p 也一併浮起來
這樣做可以初步解決當前的浮動問題。但也讓父級浮動了,又會產生新的浮動問題。 不建議使用

方法四:父級p定義 display:table
原則:將p屬性強制變成表格
優點:不解
缺點:會產生新的未知問題。 (不建議使用)

方法五:父元素設定 overflow:hidden、auto;
原則:這個方法的關鍵在於觸發了BFC。在IE6中還需要觸發hasLayout(zoom:1)
優點:程式碼簡介,不存在結構和語義化問題
缺點:無法顯示需要溢出的元素(也不太建議使用)

方法六:父級p定義偽類別:after 和zoom

.clearfix:after{
   content:’.’;
   display:block;
   height:0;
   clear:both;
visibility: hidden;
}
.clearfix {zoom:1;}
原理:IE8以上和非IE瀏覽器才支援:after,原理和方法2有點類似,zoom(IE轉有屬性)可解決ie6,ie7浮動問題
優點:結構和語意化完全正確,程式碼量也適中,可重複使用率(建議定義公共類別)
缺點:程式碼不是非常簡潔(極力推薦使用)

經益求精寫法

.clearfix:after {
   content:”\200B”;  
#    display:block;  
   height:0;  
#    clear:both;
}
.clearfix { *zoom:1; } 照顧IE6,IE7就可以了
詳細關於浮動的知識請參考這篇文章:
http://luopq.com/2015/11/08/C…

4.BFC 相關知識










#定義:BFC(Block formatting context)直譯為」區塊層級格式化上下文」。它是一個獨立的渲染區域,只有 Block-level box 參 與, 它規定了內部的 Block-level Box 如何佈局,並且與這個區域外部毫不相干。

BFC佈局規則

BFC 是頁面上的一個隔離的獨立容器,容器裡面的子元素不會影響到外面的元素。反之也如此。

BFC這個元素的垂直方向的邊距會重疊,垂直方向的距離由margin決定,取最大值
BFC 的區域不會與浮動盒子重疊(清除浮動原理)。 計算 BFC 的高度時,浮動元素也參與計算。 哪些元素會產生BFC

根元素
float 屬性不為none
position 為absolute 或fixed

display 為inline-block,table-cell,table-caption,flex , inline-flex

overflow 不為visible 5.box-sizing是什麼


設定CSS盒模型為標準模型或IE模型。標準模型的寬度只包括content,二IE模型包含border和padding

box-sizing屬性可以是三個值之一:


content-box,預設值,只計算內容的寬度,border和padding不計算入width之內
padding-box,padding計算入寬度內
border-box,border和padding計算入寬度之內
6.px,em,rem 的區別

###px 像素(Pixel)。絕對單位。像素 px 是相對於顯示器螢幕解析度而言的,是一個虛擬長度單位,是計算 機器系統的數位化影像長度單位,如果 px 要換算成物理長度,需要指定精度 DPI。 ###em 是相對長度單位,相對於目前物件內文字的字體尺寸。如目前對行內文字的字體尺寸未被人為設置, 則相對於瀏覽器的預設字體尺寸。它會繼承父級元素的字體大小,因此並不是固定的值。 ###rem 是 CSS3 新增的一個相對單位(root em,根 em),使用 rem 為元素設定字體大小時,仍然是相對大小, 但相對的只是 HTML 根元素。 #########7.CSS 引入的方式有哪些? link 和@import 的區別是?#########有四種:內聯(元素上的style屬性)、內嵌(style標籤)、外鏈(link)、導入(@import) ###link和@import的區別:######link是XHTML標籤,除了載入CSS外,還可以定義RSS等其他事務;@import屬於CSS範疇,只能載入CSS。 ###link引用CSS時,在頁面載入時同時載入;@import需要頁面網頁完全載入以後載入。 ###link是XHTML標籤,無相容問題;@import是在CSS2.1提出的,低版本的瀏覽器不支援。 ###link支援使用Javascript控制DOM去改變樣式;而@import不支援。 ######8.串流佈局與響應式佈局的差異#######

串流佈局
使用非固定像素來定義網頁內容,也就是百分比佈局,透過盒子的寬度設定成百分比來根據螢幕的寬度來進
行伸縮,不受固定像素的限制,內容物向兩側填充。

響應式開發
利用CSS3 中的 Media Query(媒介查詢),透過查詢 screen 的寬度來指定某個寬度區間的網頁佈局。

超小螢幕(行動裝置) 768px 以下
小螢幕裝置768px-992px
中螢幕992px-1200px
寬螢幕裝置1200px 以上
由於響應式開發顯得繁瑣些,一般會使用第三方響應式框架來完成,例如bootstrap 來完成一部分工作,當然也可以自己寫回應式。

區別

  • 串流佈局   響應式發展
    開發方式   行動Web開發+PC開發   響應式開發
    應用情境   一般在已經有PC端網站,開發移動的時候只需要單獨開發移動端 針對一些新建的網站,現在要求適配移動端,所以就一套頁面兼容各種終端
    開發 正對性強,開發效率高 兼容各種終端,效率低
    適配 只適配行動設備,pad上體驗相對較差 可適配各種終端機
    效率 程式碼簡潔,載入快   程式碼相對複雜,載入慢
    9.漸進增強和優雅降級

關鍵的區別是他們所專注的內容,以及這種不同造成的工作流程的差異

優雅降級觀點認為應該針對那些最高級、最完善的瀏覽器來設計網站。
漸進增強觀點則認為應關注內容本身,並優先考慮低版本。
10.CSS隱藏元素的幾種方式及區別

display:none

#元素在頁面上將完全消失,元素本來佔有的空間就會被其他元素佔有,也是說它會導致瀏覽器的重排和重繪。
不會觸發其點擊事件
visibility:hidden

和d​​isplay:none的差別在於,元素在頁面消失後,其佔據的空間依舊會保留著,所以它只會導致瀏覽器重繪而不會重排。
無法觸發其點擊事件
適用於那些元素隱藏後不希望頁面佈局會發生變化的場景
opacity:0

將元素的透明度設為0後,在我們用戶眼中,元素也是隱藏的,這算是一種隱藏元素的方法。
和visibility:hidden的一個共同點是元素隱藏後依舊佔據著空間,但我們都知道,設定透明度為0後,元素只是隱身了,它依舊存在頁面中。
可以觸發點擊事件
設定height,width等盒模型屬性為0

簡單說就是將元素的margin,border,padding,height和width等影響元素盒模型的屬性設定成0,如果元素內有子元素或內容,也應該設定其overflow:hidden來隱藏其子元素,這算是一種奇技淫巧。
如果元素設定了border,padding等屬性不為0,很顯然,頁面上還是能看到這個元素的,觸發元素的點擊事件完全沒有問題。如果全部屬性都設為0,很顯然,這個元素相當於消失了,也就是無法觸發點擊事件。
這種方式既不實用,也可能存在著一些問題。但平常我們用到的一些頁面效果可能就是採用這種方式來完成的,例如jquery的slideUp動畫,它就是設定元素的overflow:hidden後,接著透過定時器,不斷地設定元素的height,margin-top ,margin-bottom,border-top,border-bottom,padding-top,padding-bottom為0,從而達到slideUp的效果。
其他腦洞方法

設定元素的position與left,top,bottom,right等,將元素移出至螢幕外
設定元素的position與z-index,將z-index設置成盡量小的負數。

以上是HTML和CSS重點困難問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

bootstrap按鈕怎麼用 bootstrap按鈕怎麼用 Apr 07, 2025 pm 03:09 PM

如何使用 Bootstrap 按鈕?引入 Bootstrap CSS創建按鈕元素並添加 Bootstrap 按鈕類添加按鈕文本

bootstrap怎麼調整大小 bootstrap怎麼調整大小 Apr 07, 2025 pm 03:18 PM

要調整 Bootstrap 中元素大小,可以使用尺寸類,具體包括:調整寬度:.col-、.w-、.mw-調整高度:.h-、.min-h-、.max-h-

bootstrap怎麼插入圖片 bootstrap怎麼插入圖片 Apr 07, 2025 pm 03:30 PM

在 Bootstrap 中插入圖片有以下幾種方法:直接插入圖片,使用 HTML 的 img 標籤。使用 Bootstrap 圖像組件,可以提供響應式圖片和更多樣式。設置圖片大小,使用 img-fluid 類可以使圖片自適應。設置邊框,使用 img-bordered 類。設置圓角,使用 img-rounded 類。設置陰影,使用 shadow 類。調整圖片大小和位置,使用 CSS 樣式。使用背景圖片,使用 background-image CSS 屬性。

bootstrap如何上傳文件 bootstrap如何上傳文件 Apr 07, 2025 pm 01:09 PM

可以通過 Bootstrap 實現文件上傳功能,步驟如下:引入 Bootstrap CSS 和 JavaScript 文件;創建文件輸入字段;創建文件上傳按鈕;處理文件上傳(使用 FormData 收集數據,然後發送到服務器);自定義樣式(可選)。

bootstrap怎麼看日期 bootstrap怎麼看日期 Apr 07, 2025 pm 03:03 PM

答案:可以使用 Bootstrap 的日期選擇器組件在頁面中查看日期。步驟:引入 Bootstrap 框架。在 HTML 中創建日期選擇器輸入框。 Bootstrap 將自動為選擇器添加樣式。使用 JavaScript 獲取選定的日期。

bootstrap日期怎麼驗證 bootstrap日期怎麼驗證 Apr 07, 2025 pm 03:06 PM

在 Bootstrap 中驗證日期,需遵循以下步驟:引入必需的腳本和样式;初始化日期選擇器組件;設置 data-bv-date 屬性以啟用驗證;配置驗證規則(如日期格式、錯誤消息等);集成 Bootstrap 驗證框架,並在表單提交時自動驗證日期輸入。

Bootstrap列表如何移除默認樣式? Bootstrap列表如何移除默認樣式? Apr 07, 2025 am 10:18 AM

Bootstrap 列表的默認樣式可以通過 CSS 覆蓋來移除。使用更具體的 CSS 規則和選擇器,遵循 "就近原則" 和 "權重原則",覆蓋 Bootstrap 默認的樣式。為避免樣式衝突,可使用更具針對性的選擇器。如果遇到覆蓋不成功的情況,可調整自定義 CSS 的權重。同時注意性能優化,避免過度使用 !important,撰寫簡潔高效的 CSS 代碼。

bootstrap導航欄怎麼設置 bootstrap導航欄怎麼設置 Apr 07, 2025 pm 01:51 PM

Bootstrap 提供了設置導航欄的簡單指南:引入 Bootstrap 庫創建導航欄容器添加品牌標識創建導航鏈接添加其他元素(可選)調整樣式(可選)

See all articles