Bootstrap 是最受歡迎的 HTML、CSS 和 JS 框架,用于開發(fā)響應(yīng)式布局、移動設(shè)備優(yōu)先的 WEB 項(xiàng)目。
當(dāng)前版本: v3.3.7 | 文檔更新于:2017-05-22
摘要:一響應(yīng)式布局最近在項(xiàng)目開發(fā)的時候,發(fā)現(xiàn)了自己對布局方面的一些不足之處,特別是適配不同分辨率方面,幾乎是沒有經(jīng)驗(yàn)的。在查閱了相關(guān)資料之后發(fā)現(xiàn),響應(yīng)式布局是目前解決不同分辨率顯示問題的最好解決方案。
一 響應(yīng)式布局
最近在項(xiàng)目開發(fā)的時候,發(fā)現(xiàn)了自己對css布局方面的一些不足之處,特別是適配不同分辨率方面,幾乎是沒有經(jīng)驗(yàn)的。在查閱了相關(guān)資料之后發(fā)現(xiàn),響應(yīng)式布局是目前解決不同分辨率顯示問題的最好解決方案。達(dá)到一次設(shè)計,普遍使用的功能。本文主要以一個小項(xiàng)目為例,來說明這個概念。響應(yīng)式Web設(shè)計
二 media查詢media查詢是響應(yīng)式布局的核心所在,根據(jù)不同的條件來顯示不同的css樣式。達(dá)到不同分辨率的屏幕上顯示不同的樣式效果的目的。
@media(min-width:1200px) { .container{ width:1170px; } }
上例就是媒體查詢一個最簡單的示例。當(dāng)輸出設(shè)備的寬度大于1200px的時候,容器的寬度等于1170px。想了解更多media query可以點(diǎn)擊這里
三 響應(yīng)式項(xiàng)目作為前端開發(fā)的同學(xué)們一定都上過BootStrap的官網(wǎng)。我們來看看官網(wǎng)的導(dǎo)航部分,當(dāng)屏幕寬度不同的時候,其導(dǎo)航條的樣式也是不一樣的。
(1)當(dāng)屏幕寬度大于768px時顯示的樣式
(2)當(dāng)屏幕寬度小于768px時顯示的樣式
下面我們就來實(shí)現(xiàn)一下這個小功能。
3.1 html核心代碼 BBootstrap 是最受歡迎的 HTML、CSS 和 JS 框架,用于開發(fā)響應(yīng)式布局、移動設(shè)備優(yōu)先的 WEB 項(xiàng)目。
當(dāng)前版本: v3.3.7 | 文檔更新于:2017-05-22
html部分主要是借鑒了bootstrap原站的寫法,發(fā)現(xiàn)他們在寫html部分的時候,用的標(biāo)簽語義化非常好也很規(guī)范,這點(diǎn)很值得我們學(xué)習(xí)。像頁面的頭部都是使用的是header標(biāo)簽,導(dǎo)航部分使用nav,正文部分使用main標(biāo)簽等等。這些標(biāo)簽的準(zhǔn)確使用能很好的讓我們看出頁面的一個整體脈絡(luò)。
3.2 css部分核心代碼body{ font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; background-color:#fff; font-size:14px; line-height: 1.42857143; color:#333; } div.container{ font-weight: 500; color: #563d7c; margin:0 auto; overflow: hidden; padding:0px 15px; @media (min-width: 768px) { width:750px; } @media (min-width: 992px) { width:970px; } @media (min-width: 1200px) { width:1170px; } div.nav-logo{ font-size: 18px; overflow: hidden; @media (min-width: 768px) { float: left; } a{ display: block; padding: 15px; line-height: 20px; @media (min-width: 768px) { margin-left:-15px; } @media (max-width: 768px) { float: left } } button{ @media (min-width: 768px) { display: none; } float:right; padding:9px 10px; margin:8px auto; background-color: #f9f9f9; border-color:#f9f9f9; border:1px solid transparent; span.icon-bar{ width: 22px; height: 2px; display: block; background-color: #563d7c; &:nth-of-type(2n){ margin: 4px 0px; } } } } nav.nav-content{ overflow: hidden; @media (max-width: 768px) { clear: both; height: 0px; transition: height 200ms linear; } ul.nav-item{ @media (min-width: 768px) { float: left; overflow: hidden; } li{ @media(min-width: 768px) { padding:15px; line-height: 20px; float:left; } a{ @media(max-width: 768px) { display: block; padding:10px 15px; line-height: 20px; } } } } ul.nav-item-right{ @media(min-width: 768px) { float: right; margin-right: -15px; } } } } main.bs-docs-masthead{ padding:80px 0px; div.container{ color:#fff; span{ margin:0 auto 30px; } } .lead{ @media (min-width: 768px) { width: 80%; } @media (max-width: 768px) { font-size: 20px; } font-size: 30px; margin:0 auto 30px; .btn{ padding: 15px 30px; font-size: 20px; width:auto; } } } .navbar-static-top { z-index: 1000; border-width: 0 0 1px; }
css的核心部分就是使用了@media query查詢,具體參加代碼。主要是幾個地方用了@media查詢來控制不同的屏幕寬度顯示不同的樣式。
3.3 一些簡單交互的實(shí)現(xiàn)當(dāng)屏幕小于768px時,頁面會顯示一個buttton按鈕,當(dāng)點(diǎn)擊button時,菜單出現(xiàn),再點(diǎn)擊隱藏,bootstrap封裝了一個collapse類來實(shí)現(xiàn)這一功能。因?yàn)樽约簩ss動畫用的不多,所以想自己寫一個類似的簡單功能,所以這里就沒有使用collapse類,而是實(shí)現(xiàn)了一個類似的功能。
js部分
const navContent = document.getElementsByClassName("nav-content")[0] const clickBtn = document.getElementsByTagName("button")[0] const collapseHeight = document.getElementsByClassName("nav-item")[0] clickBtn.addEventListener("click",function(e){ if(!parseInt(window.getComputedStyle(navContent,null).height)){ navContent.style.height = "304px" } else{ navContent.style.height = 0 } })
以上代碼基本能實(shí)現(xiàn)一個collapse部分,但是如果僅僅這樣寫還遠(yuǎn)遠(yuǎn)達(dá)不到預(yù)期的效果,這里就需要加上css3動畫-transition。transition會捕獲css的變化,并且應(yīng)用動畫的形式過渡變化,而不是硬生生的改變。這點(diǎn)是非常實(shí)用的功能。以下代碼就是讓高度在200ms,線性的改變高度。
transition: height 200ms linear;
更多關(guān)于transition的知識點(diǎn)擊這里
四 總結(jié)通過以上的小案例,我們可以大致了解一個響應(yīng)式布局是一個什么樣的概念。在日常開發(fā)中,響應(yīng)式布局是一個比較有用的布局方法,主要幾點(diǎn)就是媒體查詢的使用。(另外還有不設(shè)置絕對寬度,流體布局的使用等等)。以后自己在開發(fā)頁面的時候,一定要考慮好在不同分辨率輸出設(shè)備上的兼容顯示問題。這點(diǎn)非常重要。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/112091.html
摘要:發(fā)布按照官方發(fā)布計劃,的發(fā)布意味著進(jìn)入階段,徹底退出舞臺,的還有半年結(jié)束。為了應(yīng)對這個挑戰(zhàn),美團(tuán)點(diǎn)評境外度假前端研發(fā)團(tuán)隊(duì)自年月起啟動了面向端用戶的赫爾墨斯項(xiàng)目。前端技術(shù)越來越復(fù)雜,有不低的技術(shù)門檻。 推薦 1. 利用 Dawn 工程化工具實(shí)踐 MobX 數(shù)據(jù)流管理方案 https://zhuanlan.zhihu.com/p/... 項(xiàng)目在最初應(yīng)用 MobX 時,對較為復(fù)雜的多人協(xié)作項(xiàng)...
摘要:希望能通過理解的模塊化,窺探出模塊化的意義與思想。本文僅解析模塊化思想與技巧,構(gòu)建工具與動態(tài)樣式語言本身這兩樣是必不可少,篇幅有限就不展開討論了。 前言 前端模塊化是個非常大的話題了,我們可以簡單的分為html模塊化、javascript模塊化、css模塊化;那么我們先從css模塊化開始,css模塊化基礎(chǔ)卻必不可少。希望能通過理解css的模塊化,窺探出模塊化的意義與思想。 提綱 當(dāng)項(xiàng)目...
摘要:在這里使用學(xué)而思網(wǎng)校的錄像設(shè)備,記錄前端工程師每天學(xué)習(xí)的內(nèi)容商城小程序分享人王聰視頻插件開發(fā)分享人魏媛視頻原理分享人李佳曉視頻講座優(yōu)化實(shí)戰(zhàn)分享人江芊視頻文件操作分享人張凱視頻一次性學(xué)會正則表達(dá)式分享人賀杰視頻淺談 在這里使用學(xué)而思網(wǎng)校的錄像設(shè)備,記錄前端工程師每天學(xué)習(xí)的內(nèi)容: 2019-8-22 商城小程序codereview 分享人:王聰 視頻:https://lecture.xue...
摘要:使用移動設(shè)備查看頁面時會發(fā)現(xiàn),在微信瀏覽器中有頂部導(dǎo)航欄有效解決圖片使用單位邊角缺失的問題前端掘金起因在移動端使用布局時圖片也需要用單位。移動端實(shí)踐前端掘金說起,相信大家并不陌生。 Sticky Footer,完美的絕對底部 - 前端 - 掘金寫在前面 做過網(wǎng)頁開發(fā)的同學(xué)想必都遇到過這樣尷尬的排版問題:在主體內(nèi)容不足夠多或者未完全加載出來之前,就會導(dǎo)致出現(xiàn)(圖一)的這種情況,原因是因?yàn)?..
閱讀 3679·2021-11-23 09:51
閱讀 1676·2021-10-22 09:53
閱讀 1357·2021-10-09 09:56
閱讀 863·2019-08-30 13:47
閱讀 2164·2019-08-30 12:55
閱讀 1606·2019-08-30 12:46
閱讀 1116·2019-08-30 10:51
閱讀 2418·2019-08-29 12:43