如果将Md看作是一门语言,那么与其最恰似的应当就是我们经常接触到的HTML——它们都是面向结构的语言。
因此,使用Md最大的问题是,本身的样式并不丰富。虽然有诸如Mou这种定制功能的Md工具可以很方便地控制基本样式,也有Typora这种支持Md × HTML的Md拓展,但是本身也有无法忽视的缺点:
因此我们要朝着以下方向去发展:
举一个最近发现的小例子:我想对特定的某几张图片进行居中。
一般来说,像这种,图片是通过默认样式 img进行居中的,而在sf.gg中,这个img默认是没有对齐的样式的,也就是直接向左对齐。
那如果我需要对图片A居中,而图片B左对齐,在这两个网站中,仅仅通过Md几乎无法实现。
首先复习一下img的Md语法:
内联写法:
外联写法:
在绝大多数情况下,这个alt是不会出现在页面中的——除非你的图片加载不出来。
因此,我们换种说法就是,这个alt是作为一种“退化”属性存在的,为的是让你在加载不出图片的情况下也能给用户一些图片的描述信息。
而title属性是当你将鼠标移动到图片上时会有一个跟随鼠标的小型提示器,用到的机会比alt频繁。
那么看回img的Md语法,总共有三个可以给我们使用的参数:
其中,title太常用,因此放到最后,alt在需要SEO的场景中比较重要,我们放到第二,而剩下的url理应就是我们的最好选择
结合一下css的属性选择器,我们可以配合css对这几个参数进行客制。
一般我们要把img居中,都会选择在img的父级中添加
这也是最标准的写法,不会改变img原本的display。但是很显然,我们无法单纯通过CSS来找到img的父级。
但是标题说了通过CSS来实现,那就不能使用JS了。因此在CSS不能爬树找父级的情况下,我们还是专注回img本身。
如果我们加入这样一个css:
$='center' 的意思是以 center 结尾的 src 属性,这里的用法是,在我们需要居中的图片中的url部分加上?center即可。
由于在HTTP协议中,问号后的参数不会改变请求资源本身,因此即使带参请求,只要后端没有特殊处理,那么这个图片本身的引用是不会有问题的。
那居左居右的排版也可以用这种方式去,甚至我们还能通过这种方式去设置缩放、旋转、偏转等效果。
利用js获取鼠标指针位置,根据位置计算偏转角度,通过设定css中transform的perspective/rotateX/rotateY使banner呈现3d偏转的效果。
首先,写一个div
并给他一些基本的样式
接下来引入vue
并生成一个实例
在data中定义x轴和y轴的偏转角度
在computed计算属性中定义生成具体css语句的函数
在methods中书写鼠标在banner中的移动事件对应的函数
定义鼠标离开banner事件对应的函数(也就是将data中角度值归零)
接下来,为banner绑定相应的事件和样式
此时,发现效果已经基本实现,为了让鼠标离开时banner恢复原状的过程更加平缓,要给banner加入transition
大功告成了, 预览 。
不过我发现,锤子官方商城的效果中,banner内的文字和背景偏转角度有一定差异,感觉像不在一个平面上,我猜测应该是利用了不同的perspective,有机会我再测试一下。