雙飛翼布局內容不換行_web前端入門到實戰:圣杯布局和雙飛翼布局

稍微了解前端的人都知道,圣杯布局和雙飛翼布局是前端面試時必問的問題,因為它既能體現你懂HTML結構又能體現出你對DIV+CSS布局的掌握,畢竟我們學習CSS主要就是為了更好地布局帶來最好的用戶體驗嘛~

事實上,圣杯布局其實和雙飛翼布局是一回事。它們實現的都是三欄布局,兩邊的盒子寬度固定,中間盒子自適應,也就是我們常說的固比固布局。它們實現的效果是一樣的,差別在于其實現的思想。

圣杯布局的出現是來自于a list part上的一篇文章In Search of the Holy Grail。比起雙飛翼布局,它的起源不是源于對頁面的形象表達。在西方,圣杯是表達“渴求之物”的意思。而雙飛翼布局則是源于淘寶的UED,可以說是靈感來自于頁面渲染。一起來看看這兩種布局的區別在哪:

一、雙飛翼布局


1d38ec3a10afac91aa525ea21b68ac27.png

可以看到,我們在main里面又加了一個內容層。如果知道盒子模型,就知道我們是不能直接給main添加margin屬性,因為我們已經設置了width:100%,再設置margin的話就會超過窗口的寬度,所以我們再創造一個內容層,將所有要顯示的內容放到main-content中,給main-content設置margin就可以了。

因為不改變父元素所以只需要給main-content設置margin: 0 200px 0 200px;屬性就可以了達到效果

通過縮放頁面就可以發現,隨著頁面的寬度的變化,這三欄布局是中間盒子優先渲染,兩邊的盒子框子固定不變,即使頁面寬度變小,也不影響我們的瀏覽。如果你有了那么一點理解以后,我們來看看圣杯布局的實現:

二、雙飛翼布局


第一步:給出HTML結構:

`

Header內容區

``

中間彈性區

``

左邊欄

``

右邊欄

``
``

Footer內容區

`學習Q-q-u-n: 767-273-102 ,分享學習的方法和需要注意的小細節

寫結構的時候要注意,父元素的的三欄務必先寫中間盒子。因為中間盒子是要被優先渲染嘛~并且設置其自適應,也就是width:100%。

第二步:給出每個盒子的樣式

`header{width: 100%;height: 40px;background-color: darkseagreen;}``.container{ height:200px;overflow:hidden;}``.middle{width: 100%;height: 200px; background-color: deeppink;float:left;}``.left{ width: 200px;height: 200px;background-color: blue;float:left;}``.right{width: 200px;height: 200px;background-color: darkorchid;float:left;}``footer{width: 100%; height: 30px;background-color: darkslategray;}`

第三步:看此時的效果圖

3e47bd8fc232b43caba0e62d9f7830b8.png

大家可以看到,三欄并沒有在父元素的一行顯示,就是因為中間盒子我們給了百分之百的寬度。所有左右兩個盒子才會被擠下來。
那么如何讓它們呈現出一行三列的效果呢?那就要讓左邊的盒子要到中間盒子的最左邊,右邊的盒子到中間盒子的最右邊。換個想法,如果中間盒子不是100%的寬度,那么按照文檔流,左邊的盒子一定會在中間盒子的后面顯示,接著顯示右邊的盒子。但是現在中間盒子是滿屏了的,所以左右兩個盒子被擠到下一行顯示。我們要做到的是讓左右兩個盒子都上去。此時,CSS的負邊距(negative margin)該上陣了。

第四步:利用負邊距布局

1.讓左邊的盒子上去

需要設置其左邊距為負的中間盒子的寬度,也就是.left {margin-left:-100%;}。這樣左盒子才可以往最左邊移動。

2.讓右邊的盒子上去

需要設置其左邊距為負的自己的寬度,也就是.right {margin-left:-200px;}。這樣右盒子才可以在一行的最右邊顯示出自己。

第五步:看此時的效果圖

819ecd6c74160182aeedfeab82bb5524.png

第六步:讓中間自適應的盒子安全顯示

首先:利用父級元素設置左右內邊距的值,把父級的三個子盒子往中間擠。

代碼如下:

.container{ padding: 0 200px;} 這里的200px是左右盒子的寬度。

效果如下:

0b2d13fcec3be9ee77860b7d0d9811ad.png

我們可以看到,左右兩邊的內邊距是有了,但是中間盒子上的內容還是被壓著。

其次:給左右兩個盒子加一個定位,加了定位之后左右兩個盒子就可以設置left和right值。

代碼如下:

`.left{ position: relative; left: -200px;}``.right{position: relative;right: -210px;`學習Q-q-u-n: 767-273-102 ,分享學習的方法和需要注意的小細節

現在,圣杯布局終于搞定了,也實現了我們要的效果,左右側的盒子固定,中間盒子自適應,而且中間盒子的內容完全不受影響。你是不是也懂了呢?

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

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

相關文章

java 去掉 t_關于Java:在LocalDateTime中不能刪除“ T”

這是問題所在:GetMapping("/main/search")public String search (RequestParam String departure,RequestParam String arrival,RequestParam String departureTime,Model model) {DateTimeFormatter formatter DateTimeFormatter.ofPattern("yyyy-…

數據結構知識點總結_大牛帶你學 | 考研數據結構中線性表中順序結構的知識點總結...

前言我們都知道,數據結構中邏輯結構可以劃分為線性結構(線性表)與非線性結構兩大類。而存儲結構指的是數據元素在計算機中的存儲及其邏輯關系的表現,也就是在計算機當中對邏輯結構的表示。線性表的存儲結構主要有順序結構和鏈式結構兩種實現形式。本文主…

java矩形翻轉_如何判斷一個點在旋轉后的矩形中

前言最近在做的一款游戲中,用到點與旋轉矩形的判定來獲得一個選中的物體。在此做個記錄如圖所示,黃色的顏料屏是旋轉的,如果不做處理直接判斷點是否在矩形中,那么點擊紅點的位置會判定為選中物體。顯然這是不對的。如果物體沒有旋…

python中用函數設計棧的括號匹配問題_數據結構和算法(Python版):利用棧(Stack)實現括號的匹配問題...

算法數據結構數據結構和算法(Python版):利用棧(Stack)實現括號的匹配問題在平時寫程序當中,我們會經常遇到程序當中括號的匹配問題,也就是在程序當中左括號的數量和右括號的數量必須相等。如果不相等的話則程序必然會報錯。Hint:在讀取程序的…

python創建空元組_Python——元組的基本語法(創建、訪問、修改、刪除)

原標題:Python——元組的基本語法(創建、訪問、修改、刪除)Python 元組的使用Python 的元組與列表類似,不同之處在于元組的元素不能修改。元組使用小括號 ( ),列表使用方括號 [ ]。元組創建很簡單,只需要在括號中添加元素&#xf…

openssl 生成證書_CentOS7 httpd(Apache)SSL 證書部署

在之前我的文章中我已經搭建了nextcloud服務器,現在我們需要通過域名及https訪問怎么辦1. 進行了簡單的httpd設置后,就可以為網站添加SSL證書功能了。2. 首先得獲取證書,有了證書才能添加。我們采用本地上傳的方式將SSL證書上傳到CentOS上。獲…

FJ的字符串java問題_藍橋杯VIP試題 之 基礎練習 FJ的字符串- JAVA

問題描述FJ在沙盤上寫了這樣一些字符串:A1 “A”A2 “ABA”A3 “ABACABA”A4 “ABACABADABACABA”… …你能找出其中的規律并寫所有的數列AN嗎?輸入格式僅有一個數:N ≤ 26。輸出格式請輸出相應的字符串AN,以一個換行符結束。…

java仿qq gui_Java仿QQ登入頁面

1.[代碼][Java]代碼package com.myqq.frame;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Cursor;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.Image;import java.awt.event.MouseAdapter;import ja…

python數據預處理 重復行統計_Python數據分析之數據預處理(數據清洗、數據合并、數據重塑、數據轉換)學習筆記...

1. 數據清洗1.1 空值和缺失值的處理?空值一般表示數據未知、不適用或將在以后添加數據。缺失值是指數據集中某個或某些屬性的值是不完整的。?一般空值使用None表示,缺失值使用NaN表示1.1.1 使用isnull()和notnull()函數?可以判斷數據集中是否存在空值和缺失值1.1…

java編寫系統登錄界面_java 登陸界面怎么寫,連接數據庫后

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓界面是package 界面類;import javax.jws.soap.SOAPBinding.Use;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing…

python如何復制oracle數據_Python使用cx_Oracle模塊將oracle中數據導出到csv文件的方法...

本文實例講述了Python使用cx_Oracle模塊將oracle中數據導出到csv文件的方法。分享給大家供大家參考。具體實現方法如下:# Export Oracle database tables to CSV files# FB36 - 201007117import sysimport csvimport cx_Oracleconnection raw_input("Enter Or…

JAVA構造函數是不是封裝_Java 封裝與構造函數

面向對象思想思想的三個特征:封裝,繼承,多態。封裝:表現:函數就是一個最基本的封裝體,類也是一個封裝體。好處:1、提高了代碼的復用性,2、隱藏了實現細節,可以對外提供可…

python獲取mysql數據為excel中的sheet_python 從excel、csv、mysql、txt獲取數據源

使用python進行數據分析工作的第一步是獲取數據源,數據源來可能來自于excel、txt、csv文件、mysql數據庫。分別看看這些數據源怎么導入到python中。1. Excel 數據源導入python首先導入pandas 模塊import pandas as pdexcel 導入格式為:pd.read_excel( 路…

我的世界seus光影java版下載_我的世界0.17SEUS PE光影材質包(水反高清)下載

我的世界0.17SEUS PE光影材質包已經震撼發布,隨著我的世界pe0.17系列版本瘋狂的出現,很多玩家都有點開始不適應了,畢竟這個更新的頻率和速度太快了,0.16.0版本還沒有玩夠了,下面給大家提供我的世界0.17SEUS PE光影材質…

針式打印機風格英文字體_可愛漂亮的圣誕節和新年賀卡藝術字體推薦!

圣誕節即將到來,各種相應的促銷活動和宴會搞起來,今天macz小編為您帶來幾款風格可愛漂亮的圣誕節和新年賀卡藝術字體推薦!可以用于卡片、海報、邀請函、徽標、產品介紹、T恤等,效果魅力非常哦!可愛漂亮的圣誕節和新年賀…

golang mysql curd_用 golang 造了個 curd api 的輪子

最近需要寫個接口的項目 準備順便熟悉一下 golang在 github 找了下 golang 的 resetful 接口項目 大部分需要對每張表定義一個 model 文件所以就造了個輪子 不需要定義 model 類型的 curd 接口基于 gin 框架 只支持 mysql只需要改下 config/db.go 數據庫配置文件就能直接 go ru…

miniui展示日歷能點擊_2020年日歷設計,除了366天有新字體,還有新形式

點擊上方藍字,把我設置為星標☆吧今天是12月1日,距離2020年還有最后一個月。在我們度過的日子中,我們應該銘記每一天,每一個日子。講究儀式感的人,才是生活真正的智者。那么,對于2020年的日歷,應…

fopen php 讀取_PHP使用fopen與file_get_contents讀取文件實例分享

php中讀取文件可以使用fopen和file_get_contents這兩個函數,二者之間沒有本質區別,只是前者讀取文件的php代碼相比后者要復雜一點。本文章通過實例向大家講解fopen和file_get_contents讀取文件的實現代碼。需要的碼農可以參考一下。fopen讀取文件的代碼如…

php外部對象如何使用方法,php面向對象全攻略 (三)特殊的引用“$this”的使用...

7.特殊的引用“$this”的使用現在我們知道了如何訪問對象中的成員,是通過“對象->成員”的方式訪問的,這是在對象的外部去訪問對象中成員的形式,那么如果我想在對象的內部,讓對象里的方法訪問本對象的屬性,或是對象…

python編程制作接金幣游戲_一個簡單的pygame接金幣游戲

左右鍵控制小人移動去接空中下來的金幣,接住金幣得5分,接不住游戲結束,金幣速度會隨著level的關數而越來越快import pygame,sys,os,randompygame.init()class rect():#畫出小人def __init__(self,filename,initial_position):self.imagepygam…