图片原始像素是348 x 220
我的需求是拉伸image可以自适应内容长度,但是拉伸不能导致两边的半圆被拉成椭圆
border-image可以使用图片作为border(标准说法:border-image CSS属性允许在元素的边框上绘制图像), 给出图片后可以通过相应的参数来调整图片的拉伸,这样就可以像点9图那样保留部分内容不变的情况下,拉伸可拉伸部分来自适应。
我主要解释一下 border-image: url("") 0 170 0 170 fill / 1px 170px stretch ,
这里0 170 0 170就是划分了原始图片内容,称之为border-image-slice
后面的 1px 170px 指的是border-image-width ,字面意思是边框图片宽度,作用是将 DOM 节点分割成九宫格,这里指的就是作为实际容器的那个节点的显示范围了,我也设置为170, stretch作为border-image-repeat说明图片在超过原始长度后使用拉伸的方式
这里有更易读,更详细的文章 border-image的正解用法
点九图编辑器
https://developer.mozilla.org/zh-CN/docs/web/css/css_backgrounds_and_borders/border-image_generator (这个加载不出预览图)
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Backgrounds_and_Borders/Border-image_generator (这个可以加载出预览图)
这样就可以完美的解决我们提取css的需求。但是官方不建议我们这样做。他们认为CSS就该打包到JS中减少请求数,看需求吧。
然后在 修改最初的module模块下面的rule里面的css规则变成
上面将css分离出来了。但是图片路径可能不太对
这个不是我们想要的。所以我们要用到publicPath来解决。
在处理前我们在webpack.config.js上声明一个对象叫做 website
这里特别注意的就是 IP和端口 是你本机的IP和你配置的端口
然后在output选项中引用这个对象的publicPath属性
容器的居中显示在网页设计中是很常见的,居中显示可以获得视觉的焦点,是内容更加突出,下面就简单的说明一下如何在HTML中通过样式的控制来实现
01最常见的一种,代码示例如下图,首先,取big一半像素大小赋给small层,通过margin: 0 autotext-align: center来实现
02第二种方法,代码示例如下图,将big层的display设置为table-cell,然后small层的margin-left取(500-250)/2,也就是125即可
03第三种方法,代码示例如下图,将big层的position设置为absolute,然后small层的margin-left取(500-250)/2,也就是125即可
04第四种方法,通过display:flex实现,代码示例如下图,big层display:flexflex-direction:column而small层align-self:center
05第五种方法,在small层的宽度没有的时候,可以通过width:fit-content这个设置来完成,代码示例如下
06第六种方法,通过display:inline-block来实现,将这个设置赋给big层即可,代码示例如下图
07第七种方法,设置big层position:relative,相对情况下,使small层左浮动,代码示例如下
08第八种方法,transform属性,代码示例如下
09第九种方法,借助第三方样式,比如增加一个add节点,水平浮动向左,使small层随之浮动,代码示例如下
特别提示每种方法都适应不同的运行环境,实际操作时需要考虑不同浏览器的解析时的兼容性