使用换行符时删除HTML元素之间的空格

Ski*_*ick 105 html css image

我有一个大约10 img秒的页面.为了HTML的可读性,我想在每个img标记之间放置一个换行符,但这样做会在图像之间呈现空格,这是我不想要的.除了在标签中间而不是在它们之间打破之外,还有什么可以做的吗?

编辑:这是我到目前为止的截图.我希望书脊图像能够以随机组合显示,使用PHP.这就是我需要单独img标签的原因.

截图

opa*_*tut 155

对不起,如果这是旧的,但我刚刚找到了解决方案.

尝试将其设置font-size为0.因此,图像之间的空白区域的宽度为0,图像不会受到影响.

不知道这是否适用于所有浏览器,但我尝试使用Chromium和一些<li>元素display: inline-block;.

  • 除了这将打破使用`em`单位的布局. (16认同)
  • 我可以确认这适用于Mac OSX上的Firefox和Safari,以及Chrome.我不敢相信这不是最好的答案.多么棒的想法,我认为唯一真正回答问题的一个/给问问者他们正在寻找什么. (9认同)
  • 将`font-size`设置为0意味着在此之后您无法使用`em`单元进行可扩展设计.对某些人来说,这个答案毫无用处. (5认同)
  • 我还要查看Chris Coyier在他的页面上的"将字体大小设置为零"一节中的分析,以获取有关其他实例的一些详细信息,这可能不起作用:https://css-tricks.com/fighting-the -Space列直插间 - 嵌段 - 元素/ (2认同)

ede*_*ett 68

你可以使用CSS.在图像上设置display:block或float:left将允许您定义自己的间距并根据需要格式化HTML,但会以可能适合或可能不适合的方式影响布局.

否则,您正在处理内联内容,因此HTML格式很重要 - 因为图像将有效地像单词一样.


Que*_*tin 67

你可以使用评论.

 <img src="..." alt="..."><!--
 --><img src="..." alt="..."><!--
 --><img src="..." alt="..."><!--
 --><img src="..." alt="...">
Run Code Online (Sandbox Code Playgroud)

我担心将一系列图像并排的语义.

  • 装饰图片属于CSS,不属于HTML! (13认同)
  • 这取决于图像的装饰性.一个漂亮的边界?那应该是CSS.关于飞行的网站上的一系列飞机小照片?可能满足于不需要文本平等. (9认同)

Pau*_*eze 24

你有两个选择,没有用CSS做大概的事情.第一个选项是使用javascript从标签中删除仅限空白的子项.一个更好的选择是使用空格可以存在于标签内而不具有意义的事实.像这样:

<div id="[divContainer_Id]"
    ><img src="[image1_url]" alt="img1"
    /><img src="[image2_url]" alt="img2"
    /><img src="[image3_url]" alt="img3"
    /><img src="[image4_url]" alt="img4"
    /><img src="[image5_url]" alt="img5"
    /><img src="[image6_url]" alt="img6"
/></div>
Run Code Online (Sandbox Code Playgroud)

  • 其实我更喜欢这种风格。是的,它很丑,但它不需要可能有各种副作用的 CSS 技巧。 (2认同)

Wil*_*sel 18

Flexbox可以轻松解决这个老问题:

.image-wrapper {
  display: flex;
}
Run Code Online (Sandbox Code Playgroud)

有关flexbox的更多信息:https://css-tricks.com/snippets/css/a-guide-to-flexbox/

  • 如今,Flexbox是最干净,最简单的解决方案。我认为这应该是这里的最佳答案。`{flex-direction:row; flex-wrap:nowrap; 可以添加}`以提高可读性。 (3认同)
  • 这是最好的现代答案 (3认同)

Fla*_*ine 12

经过太多的研究,试验和错误,我找到了一种似乎工作正常的方法,并且不需要手动重新设置子元素上的字体大小,允许我在整个doc中具有标准化的em字体大小.

在Firefox中,这非常简单,只需word-spacing: -1em在父元素上设置即可.出于某种原因,Chrome忽略了这一点(就我测试而言,无论值如何,它都会忽略字间距).除此之外,我还加入letter-spacing: -.31em了父母和letter-spacing: normal孩子们.只有当您的em尺寸标准化时,em的这一部分才是空间的大小.反过来,Firefox会忽略字母间距的负值,因此不会将其添加到字间距中.

我在Firefox 13(win/ubuntu,14 on android),Google Chrome 20(win/ubuntu),ICS 4.0.4和IE 9上的Android浏览器上进行了测试.我很想说这可能也适用于Safari,但我真的不知道......

这是http://jsbin.com/acucam的演示

  • `word-spacing:-1em`样式似乎使当前版本的Chrome中的单词重叠. (2认同)
  • 您是否尝试过使用不同的字体?这看起来非常非常规,而且非常非常有可能被打破。 (2认同)

Vla*_*mir 12

我太迟了(我刚问了一个问题,并在相关部分找到了薄)但我认为显示:table-cell; 是一个更好的解决方案

<style>
img {display:table-cell;}
</style>

<img src="img1.gif">
<img src="img2.gif">
<img src="img3.gif">
Run Code Online (Sandbox Code Playgroud)

唯一的问题是它不适用于IE 7和早期版本,但可修复黑客攻击

  • 可能会工作,但有些屏幕阅读器会在语义上解释`display:table-*`并读出就像用户正在导航表一样. (2认同)

Sou*_*ter 5

使用CSS样式表来解决此问题,如下面的代码.

[divContainer_Id] img
{
    display:block;
    float:left;
    border:0;
}
Run Code Online (Sandbox Code Playgroud)

alt text http://rabu4g.bay.livefilestore.com/y1pWoAOBMiLumd2iQTAreYjQCDIkHImh2g_b2g9k4AnxtDNrCjvzL6bK7skG8QKMRNWkMG7N8e5Xm7pgle3tdRJd2y08CnnoPLy/Capture.PNG

在Firefox 3.5 Final上进行测试!

PS.你的HTML应该是这样的.

<div id="[divContainer_Id]">
    <img src="[image1_url]" alt="img1" />
    <img src="[image2_url]" alt="img2" />
    <img src="[image3_url]" alt="img3" />
    <img src="[image4_url]" alt="img4" />
    <img src="[image5_url]" alt="img5" />
    <img src="[image6_url]" alt="img6" />
</div>
Run Code Online (Sandbox Code Playgroud)

  • 他希望在"列"中有一行包含多个图像.这个答案实际上解决了这个问题,虽然"display:block"是多余的. (3认同)