Markdown 和图像对齐

Posted

技术标签:

【中文标题】Markdown 和图像对齐【英文标题】:Markdown and image alignment 【发布时间】:2010-09-20 06:56:15 【问题描述】:

我正在创建一个网站,每个月都会发布文章。这很简单,我认为使用 Markdown 编辑器(如 *** 中的 WMD 编辑器)会很完美。

但是,他们确实需要在给定段落中使图像右对齐

我看不出用当前系统的方法 - 有可能吗?

【问题讨论】:

为什么不直接问这个问题而没有“我在帮助一个朋友,这个网站每个月都会发布文章的非盈利网站”? @JGallardo 因为我想明确表示我无法完全控制系统,也没有能力购买任何类型的解决方案。我同意我可以用不同的方式来表达这个问题。 关于markdown编辑器,你可以使用伟大的stackedit.io/editor#,写在里面太棒了:) @AbdelHady 如果它在 2008 年可用 :) @iPython 2008 年的问题怎么可能与 4 年后(2012 年)提出的问题重复? 【参考方案1】:

你可以在 Markdown 中嵌入 html,所以你可以这样做:

<img style="float: right;" src="whatever.jpg">

Continue markdown text...

【讨论】:

通过剥离不必要的div 并分别在img 标签上添加一个右斜杠来清理和标准化,即` 而不是div,我更喜欢使用span 进行内联缩进。对于整段居中div 很好,甚至是简单的p 这更适用于一些经过消毒的解释器,比如 GitHub 的解释器: @MattDiPasquale 不需要斜杠。那是 XHTML,不是 HTML。 我尝试将图像嵌入到幽灵博客文章中;使用 正确地围绕图像流动以下段落,而 放置段落和图像在并排的盒子里。【参考方案2】:
<div style="float:left;margin:0 10px 10px 0" markdown="1">
    ![book](/images/book01.jpg)
</div>

Markdown 中的属性markdown 可能性。

【讨论】:

对我有用。我没有使用 github。谢谢@raphox。 与michelf's vanilla markdown php 解析器一起工作正常 这是 Markdown Extra 功能,包含在某些内容管理系统(例如 Drupal)中,但不包含在 Markdown 本身中。【参考方案3】:

更简洁的方法是将p#given img float: right 放在样式表中,或者放在&lt;head&gt; 中并用style 标签包裹。然后,只需使用降价 ![Alt text](/path/to/img.jpg)

【讨论】:

【参考方案4】:

嵌入 CSS 不好:

![Flowers](/flowers.jpeg)

另一个文件中的 CSS:

img[alt=Flowers]  float: right; 

【讨论】:

什么?现在突然每次更改降价内容时都必须编辑外部文件?对我来说这听起来不是一个好的解决方案。 @JordanReiter 这里的每个人都编写了一个由多个文件组成的程序,其中逻辑分布/组织在许多位置。我们这样做是为了可维护性。为什么这会如此痛苦和可怕的不同? Markdown 允许非程序员用户创建内容,它不应该依赖于必须在服务器上直接访问和编辑的文件。另一个例子:我认为将数据库中字段的 names 硬编码到代码中是完全正常的,但基于字段的 value 进行硬编码是错误的在您的数据库中(即if product.name == 'Tulips'),因为您不能依赖值的稳定性。只需有人将Flowers 更改为Flower,然后该图像就会突然出现在视野之外。此外,他们每次添加图片时都必须给您打电话! @cboettig 这是对 alt 标签的严重滥用。它应该是图片的文字描述,供看不到图片的人使用。 我很惊讶有这么多人为这个解决方案哭泣。这是一个漂亮的技巧,对于解决某些托管服务的问题是必要的。给这个漂亮的 hack 的海报现在不见了,取而代之的是社区留下了哭泣的孩子。【参考方案5】:

最简单的就是将图片包裹在一个中心标签中,像这样......

<center>![Alt test](http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png)</center>

任何与 Markdown 相关的东西都可以在这里测试 - http://daringfireball.net/projects/markdown/dingus

当然,&lt;center&gt; 可能已被弃用,但它很简单而且有效!

【讨论】:

刚刚注意到 OP 要求右对齐——当我偶然发现这个答案时,我正试图将图像居中。 我实际上将支持@yoyo——&lt;center&gt; 确实有道理。它已从 HTML 中弃用,因为 HTML 应该只描述内容;样式应该在样式表中。然而,Markdown 有不同的意图:包含足够的样式来传达文本消息,并将其余的留给渲染器/站点。 &lt;center&gt; 似乎比考虑 CSS 要自然得多 widths、floats、margins ……我什至会用 Markdown 解析器替换 &lt;center&gt; 适当的支持 CSS 的标签元素,就像它目前如何智能地找出段落一样。【参考方案6】:

我喜欢通过使用表格将图像与垂直管道 (|) 语法对齐来变得超级懒惰。这得到了一些 Markdown 风格的支持(如果你喜欢的话,Textile 也支持):

| I am text to the left  | ![Flowers](/flowers.jpeg) |

| ![Flowers](/flowers.jpeg) | I am text to the right |

它不是最灵活的解决方案,但它可以满足我的大部分简单需求,以 markdown 格式易于阅读,并且您无需记住任何 CSS 或原始 HTML。

【讨论】:

我喜欢这种风格,非常markdown-y。太糟糕了,它在 github 上不起作用(反正还没有。) 我刚刚在 GitHub 上尝试过这种语法,现在似乎可以使用了。 这是一个有趣的 hack,但它滥用表格进行布局。欢迎来到 1999 年。 对于 github 风格的降价,添加一行 |-|-|。它告诉解析器有一个表,第一行是一个表头。例如:goo.gl/xUCRiK【参考方案7】:

许多 Markdown “额外”处理器支持属性。所以你可以像这样包含一个类名(PHP Markdown Extra):

![Flowers](/flowers.jpeg).callout

或者,或者(Maruku,Kramdown,Python Markdown):

![Flowers](/flowers.jpeg): .callout

然后,当然,您可以正确使用样式表:

.callout 
    float: right;

如果您的支持这种语法,它可以为您提供两全其美的优势:没有嵌入式标记,并且样式表抽象到足以不需要您的内容编辑器进行修改。

【讨论】:

当你写完所有这些时:!Flowers: .callout 你可能已经写了 我同意,但 Markdown 经常被用于不具备 *ML 知识的用户,因此没有理由更喜欢 HTML 而非任何其他任意语法。 (“No reason”当然是过于简单化了。您可能希望您的编辑器离最终的 HTML 渲染更近或更远的用户体验原因有很多。或者您可能不愿意引入如果您选择 Markdown 来抽象呈现技术,则内容中的 HTML 依赖关系。)【参考方案8】:

作为 greg said,您可以在 Markdown 中嵌入 HTML 内容,但 Markdown 的要点之一是避免必须拥有广泛的(或任何相关的)CSS/HTML 标记知识,对吧?我就是这样做的:

在我的 Markdown 文件中,我只是简单地指示我的所有 wiki 编辑器使用如下所示的内容嵌入所有图像:

'<div> // Put image here  </div>`

(当然......他们不知道&lt;div&gt; 是什么意思,但这不重要)

所以 Markdown 文件看起来像这样:

<div>
![optional image description][1]
</div>

[1]: /image/path

在包裹整个页面的 CSS 内容中,我可以对图像标签做任何我想做的事情:

img 
   float: right;

当然,您可以对 CSS 内容做更多的事情...(在这种特殊情况下,用 div 包裹 img 标记可防止其他文本围绕图像包裹...不过,这只是一个示例),但是恕我直言,Markdown 的重点是,您不希望潜在的非技术人员进入 CSS/HTML 的来龙去脉。作为 Web 开发人员,您可以自己制作 CSS 内容将页面包装得尽可能通用和干净,但您的编辑也不需要知道这一点。

【讨论】:

【参考方案9】:

如果您在 Python 中实现它,an extension 可以让您添加 HTML 键/值对和类/ID 标签。语法是这样的:

![A picture of a cat](cat.png): style="float:right"

或者,如果嵌入式样式不能让您的船漂浮,

![A picture of a cat](cat.png): .floatright

带有相应的样式表,stylish.css:

.floatright 
    float: right;
    /* etc. */

【讨论】:

【参考方案10】:

我喜欢 learnvst's answer 使用这些表格,因为它非常易读(这是编写 Markdown 的目的之一)。

但是,对于 GitBook 的 Markdown 解析器,除了一个空的标题行之外,我还必须在其下方添加一个分隔线,以便识别和正确呈现表格:

| - | - |
|---|---|
| I am text to the left  | ![Flowers](/flowers.jpeg) |
| ![Flowers](/flowers.jpeg) | I am text to the right |

分隔线需要至少包含三个破折号---

【讨论】:

【参考方案11】:

我在 pure Markdown 中找到了一个不错的解决方案,带有一点 CSS 3 hack :-)

![image alt >](/image-right.jpg)
![image alt <](/image-left.jpg)
![image alt ><](/center-image.jpg)

image alt&lt;&gt; 结尾时,跟随左侧或右侧的CSS 3 代码浮动图像。

img[alt$=">"] 
  float: right;


img[alt$="<"] 
  float: left;


img[alt$="><"] 
  display: block;
  max-width: 100%;
  height: auto;
  margin: auto;
  float: none!important;

【讨论】:

CSS应该放在MkDocs目录的什么位置? @YannDuran @IvanHuang 只需确保根据 MkDocs 文档添加一个 extra.css 文件,并将 css 放入该文件中。【参考方案12】:

对于上面使用 ALT 标记和 alt 标记上的 CSS 选择器的方法,我有一个替代方法...相反,添加一个 URL 哈希,如下所示:

首先是你的 Markdown 图片代码:

![my image](/img/myImage.jpg#left)
![my image](/img/myImage.jpg#right)
![my image](/img/myImage.jpg#center)

注意添加的 URL 哈希 #center。

现在使用 CSS 3 属性选择器在 CSS 中添加此规则,以选择具有特定路径的图像。

img[src*='#left'] 
    float: left;

img[src*='#right'] 
    float: right;

img[src*='#center'] 
    display: block;
    margin: auto;

您应该能够像定义类名一样使用这样的 URL 哈希,并且它不是像某些人针对该解决方案所评论的那样滥用 ALT 标记。它也不需要任何额外的扩展。为左右浮动或您可能想要的任何其他样式做一个。

【讨论】:

正是我想要的。你是生命的救星。我想补充的一件事是 ``` h1 h2 clear: both ``` 这样下一个标题就从新行开始(不与图像重叠) 看起来像我要找的东西,但是......我如何制作 CSS?以及如何在 Markdown 中调用它? 这也是和我一样的好解决方案 :) @OzzyCzech - 并非如此,您的解决方案滥用了图像“alt”标签,这可能不利于页面上的可访问性合规性,该解决方案通过 src 标签使用非入侵方法。 谢谢,但是如何将所有图像更改为中心(使用单个 CSS 文件)?【参考方案13】:

我有同样的任务,我通过添加以下内容将图像向右对齐:

<div style="text-align: right"><img src="/default/image/sms.png"  /></div>

为了使您的图像向左或居中对齐,请替换

<div style="text-align: right">

<div style="text-align: center">
<div style="text-align: left">

【讨论】:

我试过了,但它现在可以工作了。图像已对齐,但 html 文本显示。【参考方案14】:

这对我有用

<p align="center">
 <img src="/LogoOfficial.png"  >
</p>

【讨论】:

【参考方案15】:

在警告框中将图像和文本作为段落的一部分并排对齐。

<div class="warning" style='background-color:#EDF2F7; color:#1A2067; border-left: solid #718096 4px; border-radius: 4px;'>
<p style='padding:0.7em; margin-left:0.7em; display: inline-block;'>
<img src="typora_images/image-20211028083121348.png" style="zoom:70%;  float:right; padding:0.7em"/>
<b>isomorphism</b>  &rarr;  In mathematics, an isomorphism is a structure-preserving mapping between two structures of the same type that can be reversed by an inverse mapping.<br>
</p>
</div>

输出:

【讨论】:

以上是关于Markdown 和图像对齐的主要内容,如果未能解决你的问题,请参考以下文章

markdown 同时边缘对齐和学习

Markdown为啥不支持居中,右对齐等格式设置

学习总结Markdown 使用-表格及其居中等格式

博客园的markdown图片居中对齐并调整大小

发布内容需要的Markdown语法

markdown Flexbox对齐自主轴