p标签之间似乎不可能有2个空行而不修改原始元素

时间:2013-08-02 03:48:43

标签: html css html5 css3 markdown

这是我上一个问题的另一个问题:

Is it impossible to have 2 blank lines between p tag? Markdown

在给出各种评论之后,我曾经以为我可以管理它;

事实上,我不能。

--------

BR

--------
一个

--------

p tag


--------

A

--------

好的,现在,我想在A和B元素之间插入2行而不是1而不修改原始元素;

我期望的结果是这样的(模仿)


--------
    



乙     

--------

尝试使用p标签


--------

A

--------

哎哟!!插入3行而不是2.

所以,HTML和CSS无法做到这一点吗?

代码: http://jsfiddle.net/LhDFs/9/

--------<br>
## br<br>
--------<br>
A<br>B
<br>--------<br>
## p tag
<br>--------
<p>A</p>
<p>B</p>
--------<br>
## OK, now, I want to insert 2 lines instead of 1 between A and B elements without any modification of the original elements;<br>
## The result I expect is like this (br emulation)
<br>--------<br>
    <br>
A<br><br><br>B
    <br>
<br>--------<br>
## trying with p tag 
<br>--------<br>
<p>A</p>
<p style = 'margin: 0;'>&nbsp;</p>
<p>B</p>
--------<br>
## Ouch!! 3 lines inserted instead of 2.
<br> ## so, is there no way to do this by HTML and CSS??

编辑: 有人提到我对HTML的理解还不成熟,我不会否认它;然而,人们所说的是关于HTML的限制。

为了使事情更清楚,这是针对HTML + js编码,而不是静态的。所以,我再次想要在A和B元素之间插入2(或任意数字)而不是1,而不对原始元素进行任何修改;

因为该函数不是修改原始上下文而是插入空行。我打算插入东西。当我插入东西时,如果我需要修改原始上下文,更复杂的东西一般都不顺利。所以,如果真的不可能在原始元素之间插入精确的线条,我放弃了并且弄乱了原始上下文。我想知道的是,是否可能。

如果真的不可能,那就告诉我吧,而不是给我一些代码。

谢谢。

编辑:

我得出结论,只要存在默认的段落标记上下文,就不可能插入确切的行。

因此,整个上下文应使用'noMargin'段落标记构建。

http://jsfiddle.net/LhDFs/10/

<p class="noMargin">No margin</p>
<p class="noMargin">&nbsp;</p>
<p class="noMargin">&nbsp;</p>
<p class="noMargin">No margin</p>

CSS

p.noMargin {
    margin: 0;
} 

或只是

<p>No margin</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>No margin</p>

CSS

p{
    margin: 0;
} 

归功于

@ 3dgoo

Is it impossible to have 2 blank lines between <p> tag? Markdown

谢谢大家,如果有人对我的帖子有不愉快的感受,我很抱歉。

4 个答案:

答案 0 :(得分:1)

我会告诉你正确的方法来做到这一点。这在将来很容易理解,改进和修改。

http://jsfiddle.net/techsin/FDK7P/

  
    
      

哦,css不是javascript

    
  

css代码.double-space {margin-top:2em;}然后将class属性应用于您想要具有双倍空格的任何段落。但是如果你想这样做的第一种方式,使用伪选择器,那么它很好,但更多的工作和低效。

但是有办法以其他方式做到这一点......

http://jsfiddle.net/techsin/FDK7P/1/

我建议第一种方式......因为看下面的图片

Default Margin

灰色的Css样式

或块元素的浏览器自动 /默认值应用。

因此,对于我们要修改的段落,我们将 1em 设为 2em 。哪个覆盖默认值为1em。 enter image description here

答案 1 :(得分:0)

你看到'三行,因为A和B段(p元素)加起来自己的边距。您需要设置这些元素的样式以实现您的需要。

这样的事情(显然最好使用css类而不是style属性:

<p style='margin: 0;'>A</p>
<p style='margin: 0;'>&nbsp;</p>
<p style='margin: 0;'>B</p>

答案 2 :(得分:0)

尝试将其设置为其中一种

<p style="margin-bottom: 10px;">text</p>
<p style="line-height: 200%;">text</p>

以当前字体大小的百分比表示的行高

答案 3 :(得分:0)

好的,让我们回到HTML基础知识,可能它会有所帮助!

首先,p标签是包含内联元素的块元素 这里简短的教程:http://www.webdesignfromscratch.com/html-css/css-block-and-inline/

所以p是段落,br表示换行符。实际上,您在段落中划分内容,有时需要使用换行符更改行。如果你想拥有,请说:

文字A.


文字B

然后你应该有两个不同的段落:

<p style="margin-bottom: 1em;">text A</p>
<p>text B</p>

(好吧,把你的css放在另一个文件中,而不是内联)

保证金推动另一段。对于换行符,它应如下所示:

文字A
文字B

<p>text A<br>text B</p>

我将段落保留在所有段落中,但在其中有一个换行符。

在CSS中将margin-bottom应用于p,你的所有段落都将具有相同的距离!有点像正常的标题,标题1,标题2 ......在Word中您可以在之前和之后决定保证金。

希望它有所帮助!

修改

你可以用Javascript来做,或者我更喜欢用这种方式使用jQuery:
(在jQuery编码中)

$('p').each(function() {
    var $this = $(this);
    if ($this.html() == '&nbsp;') {
        $this.remove();   
    }
});

例如,您可以使用正则表达式。我删除了包含非中断空格的p标记,因为它之间添加了一个完整的段落。保留两个不同的段落,这样就可以更容易地设置一些边距并用css控制所有内容(就像我说的那样是我的答案的顶部。不要试图在两者之间添加br或p,但是边距! )。使用br,你需要3 br来跳过它们之间的两行。

这就是你需要的吗?如果没有,请更清楚!