快捷搜索:
来自 新京葡娱乐场网址 2019-07-07 19:52 的文章
当前位置: 67677新澳门手机版 > 新京葡娱乐场网址 > 正文

我就是要用CSS实现

百分比宽度切分

于是我们回归本源,遵从CSS世界的规则来,将点线合起来看,每个子元素包含自己的点线,从左至右排列,并使用自适应布局的方式,子元素宽度为百分比,如下图的方案:

新京葡娱乐场网址 1

  • 新京葡娱乐场网址 ,灰色背景线依旧使用父元素的after实现;
  • 每个子元素宽度一致,为平均下来的百分比值,如25%;
  • 点绝对定位在子元素右侧;
  • 绿色线条在子元素内实现。

然而我们发现这么做不灵,在普通盒子模型里,子元素宽度总和无法溢出父元素(除了flex),在这里总宽度是4个带线子元素(百分比) 1个点宽度(固定),实际25%的划分展示与理想不符。

此外,最左侧只有点,没有线条,点的宽度固定,线条宽度不定,css无法计算(忘掉表达式吧),无法隐藏线条,fail!

3、垂直居中

.parent{display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center;}

完整demo

新京葡娱乐场网址 2<style> .parent{display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center; height:100px; width:150px; background-color:pink;} .child{ width:50px; height:50px; border:1px solid green; } </style> </head> <body> <div class="parent"> <div class="child"></div> </div> View Code

新京葡娱乐场网址 3

写在最前

我们都是前端工程师,无论你现在是页面仔,还是Node服务开发者,抑或是全端大神,毋庸置疑的是,我们都是前端工程师,我们生来就对追求页面的极致拥有敏锐的触觉,无论是页面实现方式的高大上、页面的极致的性能还是页面完美的展现,都是我们孜孜不倦的追求目标。即使这些在别人眼里,只是跟其他的页面一样没什么不同,但我们却能为其中那只有我们才知道的一抹别致而窃喜。

而今天我要讲的,就是我们最熟悉的老朋友,CSS。不讲枯燥的语法,抛开js,让我们一起来看业务中那别致的纯CSS实现,让我们一起来追求那更好的页面实现,希望我带着你走完这段旅程后,你能收获一些惊喜甚至灵感。

四、经典布局

flexbox经典的布局应用是垂直等高,水平均分,按比例划分,水平垂直居中,还可以实现移动端的弹窗。

旅程还在继续

本文讲了笔者对前端页面开发中尽量思考多用CSS实现的一些见解,主观性强烈,欢迎大家的一起来探讨。

通过业务实践中的两个例子带领大家走了一回CSS实现旅程,还望各位观众姥爷过了瘾,如大家有一些更好的实践十分欢迎与我分享。

我跟你的旅程就在此结束了,但你的旅程依然在继续,若本文能给你带来启发,我就最开心不过了。

最后,flex大法好!

 

行文匆忙,如大家发现错误欢迎指正。

感谢你的阅读!

 

4 赞 12 收藏 评论

新京葡娱乐场网址 4

1、用于父元素的样式

  • display:block;该属性会将此元素及其直系子代加入弹性框模型中。(flexbox模型只适用于直系子代)
  • box-orient:horizontal|vertical|inline-axis|block-axis|inherit;该属性定义父元素中的子元素是如何排列的。horizontal对父元素的宽度分配划分。
  • box-pack:start|end|center|justify;box-pack表示父容器里面子容器的水平对齐方式

新京葡娱乐场网址 5

  • box-align:start|end|center|baseline|stretch;表示父容器里面子容器的垂直对齐方式。

新京葡娱乐场网址 6

二、手Q家校群先锋教师进度条

下图是手Q家校群先锋教师进度条设计稿:

新京葡娱乐场网址 7

图中的12345便是主角进度条。分析需求如下:

  • 线的长度不固定
  • 点平均地分布在一条线上
  • 点的个数不固定,可能会改变
  • 激活的点之间线的颜色是绿色的

让我们看下如何用纯CSS实现。

六、资源链接

display:-webkit-box

A Complete Guide to Flexbox

探索Flexbox

时下Web App中的Flexbox应用

 

本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:

 

一、概述 浮动在移动布局中不再重要,flex盒模型越来越重要。 flexbox经历过三个版本,主要区别是2009年到2012年之间的语...

一、手Q吃喝玩乐  好友去哪儿九宫格图

下图是手Q吃喝玩乐  好友去哪儿九宫格图的图示:

新京葡娱乐场网址 8

 

从上图我们可以分析出如下需求:

  • 图片大小自适应;
  • 图片个数不同时,图片按照指定方式排列;
  • 图片相邻处有1px空白间隙。

我们以最复杂的6图布局为例,一步一步来看如何以纯CSS实现。

4、移动端弹窗 

 现在移动端很多弹窗组件使用flexbox来实现,直接嵌套div.overlay>div.pop。

新京葡娱乐场网址 9<style> .overlay{ /*flex style*/ display:-webkit-box; -webkit-box-orient:horizontal; -webkit-box-pack:center; -webkit-box-align:center; display:-moz-box; -moz-box-orient:horizontal; -moz-box-pack:center; -moz-box-align:center; display:-o-box; -o-box-orient:horizontal; -o-box-pack:center; -o-box-align:center; display:-ms-box; -ms-box-orient:horizontal; -ms-box-pack:center; -ms-box-align:center; display:box; box-orient:horizontal; box-pack:center; box-align:center; display: -webkit-flex; -webkit-align-items: center; -webkit-justify-content: center; display: flex; align-items: center; justify-content: center; /*other style*/ width:100%; max-width:750px; height:100%; position:fixed; top:0; left:0; background:rgba(0,0,0,0.5); } .popup{ width:90%; max-width:650px; border:1px solid green; padding:20px 4% 4% 4%; box-sizing:border-box; height:auto; background:#fff; border-radius:4px; position:relative; } .popup-close{ width:15px; height:14px; background:url(image/close.png) no-repeat; background-size:100% 100%; position:absolute; top:8px; right:8px; } </style> 主页面的文字 <div class="overlay"> <div class="popup"> <a href="javascript:;" class="popup-close"></a> 弹层的文字 </div> </div> View Code

新京葡娱乐场网址 10

flex 布局上下划分

来,我们快动手分块吧!新解决方案出现导致的肾上腺素上升,使我们迫不及待使用了传统css文档流自上而下的方式来划分,我称为上下划分,如下图:

新京葡娱乐场网址 11

上面一块包含左侧1个2/3的大块,右侧2个1/3的小块,下面一块则是3个1/3的小块。

我们指定2/3的大块宽度是66.6%,1/3的小块宽度是33.3%(实际可以使用-webkit-box-flex来分配,这里为了下面的计算方便)。

来看下实际效果,你也可以猛击demo来查看源码:

新京葡娱乐场网址 12

demo中我们看到中间那条竖空白间隙错位了,为什么?按照预期我们上面块左侧宽度66.6%,下面块左侧宽度33.3%

  • 33.3%,两个宽度应该相等才对。

然而我们忽略了flex一个重要特性,子元素会自动占满父元素剩余空间,这时子元素宽度计算受flex控制,下面块的3个子元素宽度计算并非一定是相等的,会有些许差异,此时66.6% != 33.3% 33.3%

怎么破!别急,我们刚刚只是受到了肾上激素的影响,让我们冷静下来重新思考如何划分。

二、flexbox常用属性

WHEN,何时

“我懂了,看起来是有那么点意思,可是我什么时候能用CSS来做大事啊?”

在我看来:

  1. 实现的对象是非交互性UI;
  2. 这么做不会给你带来过量的DOM。要知道最不能忍受的,就是臃肿的页面;
  3. 这么做能完美实现UI、能覆盖所有场景,否则设计跟产品不服。

什么是非交互性UI,就是不会在用户触发了某种行为时,哗啦啦来个闪瞎眼的交互,吓得用户直接高潮,而是从页面渲染后,就一直在那里,那么安静,那么美的女子,哦不,UI。

 

五、兼容性

新京葡娱乐场网址 13

 

PC端:

  • 无前缀:Chrome 29 , Firefox 28 , IE 11 , Opera 17
  • 需要前缀:Chrome 21 , Safari 6.1 , Opera 15 需要前缀-webkit-

提示:旧版本的Firefox(22-27)支持除了flex-wrapflex-flow之外的新语法。Opera (12.1 - 17 )使用flex可以没有私有前缀,但是中间的15和16版本需要私有前缀。

移动端:

  • 无前缀:Android 4.4 , Opera mobile 12.1 , BlackBerry 10 , Chrome for Android 39 , Firefox for Android 33 , IE 11 mobile
  • 需要前缀:iOS 7.1 需要前缀-webkit-

我就是要用CSS实现

2016/01/15 · CSS · CSS

原文出处: AlloyTeam   

flexbox简介,flexbox

绝对定位大法

我们看了第一眼,便想起了最受青睐的万金油 absoulte,方案图如下:

新京葡娱乐场网址 14

  • 将点、线分离,灰色背景线使用父元素的after实现;
  • 点使用绝对定位,left百分比值定位;
  • 绿色线条使用父元素before实现,绝对定位,宽度百分比值。

不消一会儿我们就做出来了,但再多看一眼觉得十分不妥,点和线百分比值都要手动指定,不便修改点的数量,且过多的绝对定位不优雅。

这并不是我们想要的CSS实现。

2、子元素水平排列,一个子元素定宽,剩余子元素按比例分割

新京葡娱乐场网址 15<style> .parent{ width: 500px; height: 200px; display: -webkit-box; background-color:pink; -webkit-box-orient: horizontal;/* 虽然默认的排列方式是水平的,但是为了区分起见,加上该属性 */ } .child-one{ background: lightblue; -webkit-box-flex: 1; } .child-two{ background: lightgray; -webkit-box-flex: 2; } .child-three{ background: lightgreen; /*定宽,并加上左右margin,父元素加上粉色背景色更好理解*/ width:150px; margin:0 15px; } </style> </head> <div style="display: -webkit-box;-webkit-box-pack: center;border: 1px solid #000;"><!---webkit-box-pack:center让.parent水平居中--> <div class="parent"> <div class="child-one">1</div> <div class="child-two">2</div> <div class="child-three">3</div> </div> </div> View Code

新京葡娱乐场网址 16

本文由67677新澳门手机版发布于新京葡娱乐场网址,转载请注明出处:我就是要用CSS实现

关键词: