场景分析
场景建模根据场景分析提出的一些假设,我们试着去建立对应的模型,下面是分别根据上面的三个场景设计的相关模型。
场景实现相关说明为了统一,这里我们定义一个 背景居中我们做这样一件事,在一个div容器中,我们通过 这里介绍两个属性 (container width - image width) * (position x%) = (x offset value) 简言之,就是宿主元素的宽高减去图片宽高乘以相关百分比就是相对于宿主元素左上角那个原点的位置。 在背景图片不重复的情况下,你想让一张图片居中于宿主元素的方法,可以有 所以,在楼上这些前提下,我们大致能够归出一个类,形如: /** 这里以复杂写法的百分比为例, 分别代表距离宿主元素左上角的x和y轴的距离**/ 文字内容居中如果宿主元素的内容是文字之类的,我们期望它能够居中于宿主元素,这里用到两个属性,一个是 相关例子链接:https://ataola./show/zj/center-middle.html#example11 子元素居中于父元素相关说明这里解释下,父相子绝,这个是我阉割了“父级元素相对定位,子级元素绝对定位”这句话浓缩后的叫法。后面出现这个概念我就不过多再进行重复介绍了。 父相子绝 + margin: auto父元素相对定位子元素绝对定位后,设置其 .box-position { 相关例子链接:https://ataola./show/zj/center-middle.html#example1 父相子绝 + 负值margin父元素相对定位子元素绝对定位后,子元素设置 .box-position { 相关例子链接:https://ataola./show/zj/center-middle.html#example2 父相子绝 + 平移(translate)在楼上那个例子的基础上,为了矫正子元素的偏移,我们其实还可以用css的平移属性。这个平移的百分比是相对于其本身的宽高的,所以是向反方向50%。 .box-position { 相关例子链接:https://ataola./show/zj/center-middle.html#example3 父子double相(不推荐,做着玩玩的)一个不成熟的做法哈,父子都是相对定位也还是可以勉强居中的,硬算嘛,这里没有太大价值就不展开了。 .box-position { 相关例子链接:https://ataola./show/zj/center-middle.html#example4 父子double相 + rem(不推荐,同楼上)没有太大价值,略过。 相关例子链接: https://ataola./show/zj/center-middle.html#example5 父相子绝 + calccalc这个css属性可以允许在声明css属性值时执行一些计算,回到我们之前的那个矫正偏移量的模型上,那么这里很容易想到子元素 .box-position { 相关例子链接:https://ataola./show/zj/center-middle.html#example6 新旧flexflex布局,但凡一个正经点的初面都会遇到的,因为它好用也很常用,这里介绍两种,一种是新版的flex布局的写法,一种是旧版的flex布局的写法 flex布局你就把它看成是一条轴线,一条长得还挺夯实的轴线,在这条轴线上,我们想要放一个盒子,有很多种放法,具体的可以搜下阮一峰老师的教程这里不再赘述。一个化繁为简的想法哈,这个是跟琦瑞哥学到的,就是我们很多时候也不一定能记得住那么多属性,我们期望做这样一件事,就是把它化抽象为形象。我们可以用具体的方位去表达我们的想法,简言之就是封装成一个类库,然后用一些接地气的类名去控制flex布局。 有兴趣的童鞋可以看下我实现的一个低配版的css样式库:https://ataola./show/box/assets/taolaui/flex.css 新版flex的写法在不改变轴方向的情况下,其父元素设置 父元素设置: .flex { 相关例子链接:https://ataola./show/zj/center-middle.html#example7 旧版flex的写法这里就是提及一下有这么种存在,读者用新版的写法就好。 .box-old { 相关例子链接:https://ataola./show/zj/center-middle.html#example8 table布局父元素设置 .box-table { 相关例子链接:https://ataola./show/zj/center-middle.html#example9 grid布局前面我们提到的flex布局时轴布局是一维的,这里的grid网格布局时二维的是平面的。将其父元素设置成 .box-grid { 相关例子链接:https://ataola./show/zj/center-middle.html#example10 最后相关实现地址已开源:https://ataola./show/zj/center-middle.html,若有不足之处,供批评指正! 其他网页设计基础总结:https://ataola./show/ 参考文献https://developer.mozilla.org/zh-CN/docs/Web/CSS/background-position https://developer.mozilla.org/zh-CN/docs/Web/CSS/background-repeat https://developer.mozilla.org/zh-CN/docs/Web/CSS/calc
|
|