Markdown——CSS达成图片居中等排版方法

html-css017

Markdown——CSS达成图片居中等排版方法,第1张

使用Md可以提升写作效率,同时增强文章排版的工整规范性,因此越来越多人尝试使用Md取代传统富文本编辑器作为写作工具。

如果将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协议中,问号后的参数不会改变请求资源本身,因此即使带参请求,只要后端没有特殊处理,那么这个图片本身的引用是不会有问题的。

那居左居右的排版也可以用这种方式去,甚至我们还能通过这种方式去设置缩放、旋转、偏转等效果。

1. float元素务必指定width属性

很多浏览器在显示未指定width的float元素时会有bug。所以不管float元素的内容如何,一定要为其指定width属性。

另外指定元素时尽量使用em而不是px做单位。

2. float元素不能指定margin和padding等属性

IE在显示指定了margin和padding的float元素时有bug。因此不要对float元素指定margin和padding属性(可以在float元素内部嵌套一个div来设置margin和padding)。也可以使用hack方法为IE指定特别的值。

3. float元素的宽度之和要小于100%

如果float元素的宽度之和正好是100%,某些古老的浏览器将不能正常显示。因此请保证宽度之和小于99%。

4. 是否重设了默认的样式?

某些属性如margin、padding等,不同浏览器会有不同的解释。因此最好在开发前首先将全体的margin、padding设置为0、列表样式设置为none等。

5.检查HTML元素是否有拼写错误、是否忘记结束标记

6. 是否忘记了写DTD?

如果无论怎样调整不同浏览器显示结果还是不一样,那么可以检查一下页面开头是不是忘了写下面这行DTD:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

7. 检查CSS是否书写正确

检查一下有无拼写错误、是否忘记结尾的 } 等。可以利用CleanCSS来检查 CSS的拼写错误。CleanCSS本是为CSS减肥的工具,但也能检查出拼写错误。

8. 用删除法确定错误发生的位置

如果错误影响了整体布局,则可以逐个删除div块,直到删除某个div块后显示恢复正常,即可确定错误发生的位置。

9. 利用border属性确定出错元素的布局特性

使用float属性布局一不小心就会出错。这时为元素添加border属性确定元素边界,错误原因即水落石出。

10. float元素的父元素不能指定clear属性

MacIE下如果对float的元素的父元素使用clear属性,周围的float元素布局就会混乱。这是MacIE的著名的bug,倘若不知道就会走弯路。