精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

CSS 實現可拉伸調整尺寸的分欄布局

開發 前端
雖然 Firefox 在垂直方向上略有缺陷,如果你對兼容性沒太多需求,比如公司內部項目,Electron 應用等,那就放心大膽的使用吧,千萬不要被兼容性束縛了你的思維。

很多頁面布局,特別是那種工具類的、比如編輯器、可視化平臺等,為了充分的利用屏幕空間,都會提供拖拽調節各個分欄尺寸的功能,比如像 vscode。

vscode

抽象開來,其實就是這樣一個布局,左右、上下都是可以調整的,如下:

可拉伸調整的分欄布局

你也可以先看實際效果:CSS 可拉伸分欄布局 2(juejin.cn)[1]

是不是非常靈活呢?其實純 CSS 也是可以實現這樣的效果的,一起看看吧!

一、基本實現原理

實現這個效果需要借助 resize 特性,可以天然的實現元素拉伸特性。最常見的就是 textarea,默認就是可以拉伸的

<textarea></textarea>

textare resize

不過,我們這里需要的不是textarea,而是普通的元素。普通的元素要實現這樣的效果也很容易,只需要在overflow不是visible的情況下,添加resize屬性就行了

.resizable {
resize: both;
overflow: scroll;
}

resize

原理就是這么簡單,那么如何運用呢?

二、自定義右下角 resize

雖然看似可以拉伸,但是可拉伸范圍實在是太小了。該如何增加可拉伸范圍呢?這里有兩種思路:

  • 通過偽元素自定義
  • 容器整體放大

先說第一種思路。要定義尺寸,首先需要搞明白 resize指的是什么?經過簡單的測試發現,在 chrome 中,resize其實就是橫縱滾動條的交界處,比如直接設置滾動條的尺寸


::-webkit-scrollbar {
width: 20px;
height: 20px;
background-color: rosybrown;
}

resize 其實是滾動條交界處

現在將滾動條高度改大一點:

::-webkit-scrollbar {
width: 20px;
height: 100px;
background-color: rosybrown;
}

可以看到 resize也跟著變化了

修改 resize 尺寸

當滾動條高度足夠大時,右側就變成整條都可以拉伸了

::-webkit-scrollbar {
width: 20px;
height: 100vh;
background-color: rosybrown;
}

整列的resize

然后,這個斜線條紋可以用偽元素::-webkit-resizer來修改

div::-webkit-resizer{
background-color: royalblue;
}

自定義 resize 顏色

不過遺憾的是,這種方式只適合-webkit-瀏覽器,所以firefox就不行了。

下面來看第二種思路:整體放大。

這里說的整體放大,指的是將整個容器通過transform進行放大,這樣一來,右下角的resize也會跟隨放大了,比如:

div{
width: 300px;
height: 20px;
transform: scaleY(100);/*足夠大的放大倍數*/
overflow: scroll;
resize: horizontal;
}

通過 transfrom 整體放大resize

這樣也能達到整條側邊都可以拉伸的目的了。

下面來看實際應用吧!

三、兩欄拉伸布局

循序漸進,先實現兩欄布局。比如這樣:

兩欄布局

通常這類布局都有一定的約束,比如這里的 MAIN是自適應空間的,SIDE是固定尺寸,先快速寫出布局和樣式;

<div class="con">
<aside>
SIDE
</aside>
<main>
MAIN
</main>
</div>

關鍵樣式如下:

.con{
display: flex;
}
aside{
width: 200px;
}
main{
flex: 1;
}

那么,如何讓左邊側邊欄居右拖拽功能呢?很簡單,將剛才可拉伸的元素放入側邊欄,讓寬度由里面的拉伸元素決定(flex 子元素天然支持該特性),內容則用絕對定位覆蓋來實現,實現如下:

<aside>
<div class="resize"></div>
<div class="line"></div>
<section>SIDE</section>
</aside>

由于 firefox的resize無法自定義,所以這里單獨一個標簽來模擬拉伸軸。

aside{
position: relative;
overflow: hidden;

}
.resize{
width: 200px;
height: 16px;
transform: scaleY(100);
overflow: scroll;
resize: horizontal;
opacity: 0;
}
.line{
position: absolute;
top: 0;
right: 0;
width: 4px;
bottom: 0;
background-color: royalblue;
opacity: 0;
transition: .3s;
pointer-events: none;
}

.resize:hover+.line,
.resize:active+.line{
opacity: 1;
}

這樣就實現了左邊側邊欄拉伸的功能

兩欄可拉伸布局

四、三欄拉伸布局

有時候會出現兩邊側邊欄,中間部分是自適應的,如下:

三欄布局

這種如何實現呢?首先按照兩欄布局的思路

<div class="con">
<aside>
<div class="resize"></div>
<div class="line"></div>
<section>SIDE</section>
</aside>
<main>
MAIN
</main>
<aside class="right">
<div class="resize"></div>
<div class="line"></div>
<section>SIDE</section>
</aside>
</div>

不過這樣會有一個很明顯的問題,由于resize是在右側,如果放在右邊側邊欄,那肯定就相反了,具體表現就是,往右拉伸,右側邊欄反而增大,不符合直覺

有沒有什么辦法讓resize到左邊來呢?

首先想到的是通過翻轉變換,水平方向上翻轉可以scaleX(-1)來實現,合并起來就是

.right .resize{
transform: scale(-1, 100);
}

在 Chrome 下表現不錯

Chrome 效果

但是,Firefox 就有點奇怪了

Firefox 效果

朝右邊拖拽,右側邊欄寬度反而增加。究其原因,在 Firefox上,transform水平翻轉僅僅改變了視覺上的效果,并沒有改變交互行為,有沒有辦法可以真正改變resize的位置呢?

還真有,不過僅可以改變水平方向上的位置,通過direction屬性。這是一個可以改變文檔方向流的屬性,有些語言方向是從右往左的,所以設置后,resize 也從右側變到了左側。

通過 direction 改變resize 位置

所以實現就是

.right .resize{
direction: rtl;
}

這樣下來,Chrome 和 Firefox 均正常了

Firefox 效果

完整代碼可以訪問:CSS 可拉伸分欄布局 (codepen.io)[2]或者CSS 可拉伸分欄布局 (juejin.cn)[3]

五、其他組合分欄效果

組合分欄效果少不了垂直方向上的。

垂直方向的分欄和水平方向大同小異,只需要水平方向上縮放足夠大就行了。

.resize-top{
width: 16px;
resize: vertical;
transform: scaleX(100);
}

現在可以嘗試實現文章開頭布局效果

<div class="con">
<aside>
<div class="resize"></div>
<div class="line"></div>
<section>SIDE</section>
</aside>
<main>
<div class="main">
MAIN
</div>
<footer>
<div class="resize resize-top"></div>
<div class="line"></div>
<section>bottom</section>
</footer>
</main>
</div>

不過有個缺陷就是,無法通過direction或者其他手段,將resize真正地從下移到上面

Firefox 下無法將 resize 移到頂部

只能通過transform: scale(-1, 100);實現了,這樣就導致垂直方向上的拉伸在 Firefox 體驗不佳。效果如下:

Chrome 表現完美:

Chrome 效果

Firefox 表現差強人意:

Firefox效果(垂直方向不理想)

完整代碼可以訪問:CSS 可拉伸分欄布局 2(codepen.io)[4] 或者CSS 可拉伸分欄布局 2(juejin.cn)[5]

繼續調整一下,還可以實現這樣的布局效果

完整代碼可以訪問:CSS 可拉伸分欄布局 3(codepen.io)[6] 或者CSS 可拉伸分欄布局 3(juejin.cn)[7]

六、總結一下

以上就通過純 CSS 實現了4種常見的分欄拉伸效果,基本能滿足常見的布局需求了,是不是非常實用呢?下面總結一些要點

  • 實現原理是 CSS resize 屬性
  • resize 生效的條件是 overflow 不能是 visible
  • resize 在 Chrome 下其實是橫縱滾動條的交匯處,改變滾動條尺寸可以改變 resize 大小
  • resize 還可以通過縮放整體容器來實現
  • resize 默認是在右下角,可以通過水平翻轉到左下角,Chrome 完美支持拉伸,Firefox 不行
  • 還可以通過 direction 改變文檔流的方式,將 resize 從右下角變到左下角
  • 垂直方向上 resize 只能通過 transform 翻轉方式實現,因此 Firefox 體驗較差。

雖然 Firefox 在垂直方向上略有缺陷,如果你對兼容性沒太多需求,比如公司內部項目,Electron 應用等,那就放心大膽的使用吧,千萬不要被兼容性束縛了你的思維。

責任編輯:武曉燕 來源: 前端偵探
相關推薦

2010-09-14 17:07:26

DIV浮動定位CSS

2015-09-09 11:08:48

qq空間可拉伸頭部

2010-09-07 15:38:42

CSS絕對定位浮動

2023-10-30 09:18:28

CSSColumns布局

2010-09-02 13:53:58

CSS Sprites

2010-08-25 14:36:35

CSSheightwidth

2010-09-09 13:12:54

CSSfloatDIV

2019-04-03 13:00:27

CSSBFC前端

2023-08-22 13:18:00

Web 開發CSS

2010-09-14 16:57:29

DIV絕對定位CSS

2010-08-23 15:22:56

CSSfloat

2024-05-22 09:23:03

CSSgrid布局前端

2021-07-31 23:25:34

CSS布局UI

2010-08-30 14:03:59

CSS

2017-10-10 15:52:17

前端FlexboxCSS Grid

2010-09-13 16:22:19

ulliCSS

2022-10-13 09:01:24

GridCSS二維布局

2010-09-02 09:59:52

CSS SpritesCSS

2010-09-08 14:09:35

切換CSS

2011-06-03 15:32:25

CSS
點贊
收藏

51CTO技術棧公眾號

a天堂视频在线观看| 亚洲一区二三| 性无码专区无码| 欧美中文字幕一区二区| 欧美疯狂做受xxxx富婆| 久久这里只有精品8| 欧美女v视频| 国产在线播放一区三区四| 97在线视频免费| jizzjizzjizz国产| 国产成人夜色高潮福利影视| 91久久精品网| 波多野结衣av一区二区全免费观看| 日韩毛片在线一区二区毛片| 韩国三级在线一区| 欧美做受高潮电影o| 国产精品视频一区二区三| 亚洲精品亚洲人成在线观看| 69堂亚洲精品首页| av片中文字幕| 伊人电影在线观看| 国产精品久久久久影院亚瑟| 国产综合色一区二区三区| 97超碰资源站| 日韩精品1区2区3区| 久久久亚洲福利精品午夜| 亚洲一级片在线播放| 精品福利一区| 日韩精品一区二区三区视频在线观看| 国内自拍视频网| 深夜av在线| 亚洲尤物在线视频观看| 一区二区高清视频| 丁香在线视频| 26uuu国产一区二区三区| 国产精品免费一区二区三区| 国产男男gay体育生白袜| 日韩精品福利网| 91黑丝在线观看| 国产一级生活片| 综合色一区二区| 最近2019好看的中文字幕免费| 人妻丰满熟妇aⅴ无码| 在线综合色站| 日韩欧美综合在线| 九九九九九国产| 久久久久久久性潮| 精品视频一区二区不卡| 亚洲一二三区av| 性欧美1819sex性高清| 欧美日韩在线视频首页| www.av蜜桃| 久草成色在线| 亚洲午夜电影在线观看| h无码动漫在线观看| 性欧美video高清bbw| 日韩一区在线看| 好色先生视频污| fc2ppv国产精品久久| 亚洲色图视频网站| 91xxx视频| 伊人福利在线| 亚洲图片欧美色图| www国产精品内射老熟女| 国产777精品精品热热热一区二区| 亚洲国产精品一区二区久久恐怖片| 亚洲色成人www永久在线观看| 黄色大片在线| 亚洲成a人片在线不卡一二三区| 免费看欧美黑人毛片| 福利影院在线看| 色综合久久66| 婷婷免费在线观看| 欧美黄色一级| 亚洲精品99久久久久中文字幕| 特大黑人巨人吊xxxx| 亚洲小说图片视频| 在线精品视频视频中文字幕| 波多野结衣久久久久| 欧美精品国产一区二区| 91国内产香蕉| 中国女人真人一级毛片| 国产精品影视天天线| 国产一区福利视频| 二区三区在线| 亚洲精品五月天| 国产精品一区二区免费在线观看| 色婷婷综合久久久中字幕精品久久| 欧美三级蜜桃2在线观看| 中文字幕资源在线观看| 粉嫩的18在线观看极品精品| 亚洲欧美在线磁力| 亚洲色图综合区| 亚洲影院一区| 成人国产精品久久久久久亚洲| 国精品人妻无码一区二区三区喝尿 | 亚洲成人精品综合在线| 精品国产91洋老外米糕| 在哪里可以看毛片| 国产精品地址| 国产精品久久久久久中文字| 亚洲国产精品一| 久久精品水蜜桃av综合天堂| 日韩专区第三页| 欧美极品免费| 精品国产区一区| 亚洲色图日韩精品| 国产精品久久久久久模特| 国产欧美日韩精品丝袜高跟鞋| 懂色av蜜臀av粉嫩av分享吧| 中文字幕成人av| 日韩小视频在线播放| 亚洲精品一区av| 精品亚洲一区二区三区在线观看| 蜜臀久久精品久久久用户群体| 久久精品国产清高在天天线| 3d动漫啪啪精品一区二区免费| 国产精品一区在线看| 亚洲一级电影视频| 玖玖爱视频在线| 女厕嘘嘘一区二区在线播放| 久久久免费在线观看| aa视频在线免费观看| 国产肉丝袜一区二区| 国产av人人夜夜澡人人爽麻豆| 亚洲狼人在线| 国产一区二区三区久久精品| 日韩网红少妇无码视频香港| 国产精品99久久久久久似苏梦涵| 午夜免费电影一区在线观看| 国产精欧美一区二区三区蓝颜男同| 欧美成人高清电影在线| 日韩激情综合网| 免费在线一区观看| 欧美少妇一区| 都市激情亚洲综合| 亚洲精品一区在线观看香蕉 | 黑人与娇小精品av专区| 日本成人在线免费| 欧美91福利在线观看| 96sao精品视频在线观看| 风间由美一区| 欧美三级三级三级爽爽爽| 91精彩刺激对白露脸偷拍| 一本色道精品久久一区二区三区| 国产二区一区| av老司机在线观看| 精品久久久网站| 久草视频手机在线观看| 福利视频网站一区二区三区| avove在线观看| 国产精品亚洲一区二区在线观看| 最近2019年中文视频免费在线观看 | 一边摸一边做爽的视频17国产| 欧美日韩国产一区精品一区| av日韩免费电影| freexxx性亚洲精品| 亚洲第一福利网站| 国产成人精品一区二三区| av动漫一区二区| 日韩视频第二页| 美日韩中文字幕| 日韩av手机在线看| 91精品国产综合久久久久久豆腐| 欧美日韩精品综合在线| 永久av免费网站| 国产伦精品一区二区三区免费迷| 少妇久久久久久被弄到高潮| 成人免费在线电影网| 96精品视频在线| 久久久久久久影视| 欧美日韩一级二级| 午夜国产福利一区二区| www.亚洲免费av| 三级4级全黄60分钟| 日韩成人精品一区二区| 亚洲综合精品伊人久久| 99久久精品免费看国产小宝寻花| 亚洲精品视频免费在线观看| 一区二区视频免费| 一区二区三区丝袜| 亚洲欧美在线不卡| 青娱乐精品在线视频| 中国老女人av| 亚洲国产欧美日韩在线观看第一区| 国产精品久久久久久久久久久不卡| 毛片在线看片| 日产午夜精品一线二线三线| 欧美电影在线观看完整版| 国产精品一线| 亚洲国产精品麻豆| 成人免费看片网站| 国产有码在线| 欧美一级免费大片| 亚洲精品国产精品乱码| 国产精品剧情在线亚洲| 亚洲免费观看在线| 天堂蜜桃91精品| 无码人妻精品一区二区三区99v| 久9re热视频这里只有精品| 国产精品第10页| 日本三级在线观看网站| 亚洲欧美中文在线视频| xxxx国产精品| 色婷婷精品大在线视频| 唐朝av高清盛宴| 久久色视频免费观看| 深夜做爰性大片蜜桃| 老鸭窝91久久精品色噜噜导演| 最新中文字幕久久| 夜夜春成人影院| 成人免费视频网站| 日韩福利影视| 日韩免费视频在线观看| 五月花成人网| 日日噜噜噜夜夜爽亚洲精品| 视频在线不卡| 欧美大片在线观看| 一级黄色大片网站| 色综合久久综合网欧美综合网| 久久久久久久久久久久久女过产乱| 久久精品一区二区三区四区| 精品一区二区三区四区五区六区| 极品美女销魂一区二区三区| 成人精品小视频| 夜夜爽av福利精品导航| 国产精品自拍合集| 亚洲国产精品综合久久久| 日本一区视频在线观看免费| 精品国产一区二区三区成人影院| 亚洲一区二区三区毛片| 日日夜夜亚洲| 国产精品自产拍在线观看中文| 日韩影院在线| 57pao成人永久免费视频| heyzo高清在线| 九九精品视频在线观看| 欧美a免费在线| 国产亚洲欧洲在线| 亚洲精品国偷拍自产在线观看蜜桃| 777奇米四色成人影色区| 中文字幕人妻一区二区在线视频 | 成人看片网页| 日本精品久久久| 狠狠操一区二区三区| 国内精品久久久久久| 国产偷倩在线播放| 欧美日韩国产成人| 97影院秋霞午夜在线观看| xxxxx成人.com| 男人天堂久久久| 精品国产视频在线| 二区三区四区高清视频在线观看| 久久久www成人免费精品张筱雨| 久久99精品久久久久久野外| 久久久精品免费视频| 在线观看男女av免费网址| 久久网福利资源网站| caopen在线视频| 久久91亚洲精品中文字幕奶水| 三级资源在线| 97久久精品国产| 成人美女黄网站| 国产精品久久久久影院日本 | 国产区一区二区| 美女视频免费精品| 蜜桃免费一区二区三区| 精品国内自产拍在线观看视频| 亚洲国产精品日韩| 久久国产中文字幕| 一二三四中文字幕| 亚洲二区视频| 国产激情在线观看视频| 全部av―极品视觉盛宴亚洲| 亚洲精品久久久中文字幕| 国产一区二区影院| 国产激情视频网站| 国产欧美一区二区三区网站| 亚洲精品卡一卡二| 亚洲国产成人tv| 自拍偷拍校园春色| 4hu四虎永久在线影院成人| 国产成人自拍一区| 国产一区二区三区视频在线观看| 老司机在线永久免费观看| 色综合久综合久久综合久鬼88 | 国产精品视频免费在线观看| 国产精品一站二站| 国产在线精品一区二区中文 | 在线观看日韩片| 国内精品美女在线观看| 国产原创中文在线观看| 日韩成人免费在线| 中文字幕人妻熟女人妻a片| 93久久精品日日躁夜夜躁欧美| 特级西西www444人体聚色| 亚洲欧美一区二区不卡| 精品无码av在线| 欧美综合在线视频| 男人天堂网在线视频| 在线视频欧美性高潮| 久久www人成免费看片中文| 国产精品对白刺激| 国产suv精品一区| 樱空桃在线播放| 久久久久久婷| 中文字幕在线观看91| 国产精品亲子伦对白| 国产午夜精品无码| 欧美精品丝袜久久久中文字幕| 色呦呦中文字幕| 久久色在线播放| 校园春色亚洲色图| 精品国产免费久久久久久尖叫 | 免费不卡中文字幕在线| 日韩精品一区二区三区电影| 免费一级欧美片在线播放| 四虎国产精品永久免费观看视频| 国产三级一区二区| 日韩久久久久久久久| 日韩一区二区在线看| 电影在线高清| 国产suv精品一区二区| 国产精品任我爽爆在线播放| 四虎永久免费网站| 美女精品自拍一二三四| 毛茸茸多毛bbb毛多视频| 亚洲国产美女搞黄色| 国产精品毛片久久久久久久av| 国产一区av在线| 免费成人直播| 精品麻豆av| 在线欧美日韩| 成人欧美精品一区二区| 亚洲色图视频免费播放| 一级黄在线观看| 色婷婷av一区二区三区久久| 天天综合网天天| 欧洲精品一区色| 久久成人国产| 右手影院亚洲欧美| 亚洲动漫第一页| 国产小视频一区| 久久久视频免费观看| 国产 日韩 欧美 综合 一区| 九九热只有这里有精品| 成人综合婷婷国产精品久久免费| 久久国产精品波多野结衣av| 日韩精品一区二区三区四区| 黄网在线免费看| 国产精品国模大尺度私拍| 伊人激情综合| 屁屁影院国产第一页| 富二代精品短视频| 欧美精品a∨在线观看不卡| 青青草原一区二区| 欧美猛男男男激情videos| 日日碰狠狠丁香久燥| 国产精品午夜免费| 97精品人妻一区二区三区| 欧美成人精品影院| a级日韩大片| 福利视频一二区| 久久精品水蜜桃av综合天堂| 久久这里只有精品9| 亚洲欧美视频在线观看视频| 国产精品日韩一区二区| 伊人久久成人网| 中文字幕第一页久久| 69视频免费看| 最近2019年手机中文字幕| 91成人福利社区| 热久久最新网址| 91视频免费观看| 伊人久久成人网| 欧美精品久久久久久久久| 在线观看污污网站| 欧美一级高清大全免费观看| 俄罗斯一级**毛片在线播放| 国产一区精品在线| 老司机精品视频网站| 午夜成人亚洲理伦片在线观看| 欧美一级二级三级乱码| 成人影院在线视频| 日本精品一区二区| 激情综合网天天干| 日韩精品视频免费看| 在线a欧美视频| 97se亚洲国产一区二区三区| 人妻有码中文字幕| 国产精品久久久久久户外露出| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 欧美专区日韩视频| 天天射成人网| 老司机福利av| 日韩精品一区二区三区在线播放| 欧美日韩国产v| 人妻互换免费中文字幕| 国产欧美日韩在线视频| 精品人妻一区二区三区麻豆91|