0

The <p> is the default root element of content in most of WYSIWYG editors (I use tinymce) where <p> can not contain a block element according to this . When my content is only a single table there is a difference between page source and the rendered elements:

Source of page:

   <div class="generalbox">
   <p>
   <table><tr><td>something</td></tr><table>
   </p>
   </div>

inspected Element (in both Chrome and Mozila Firefox):

    <p></p>
    <div class="generalbox">
    <table><tr><td>something</td></tr><table>
    </div>
    <p></p>

This causes a white gap before and after the content. I used the following css rule to omit the gap effect but obviously no success:

.generalbox  p:first-of-type {
    margin-top:0;
}

.generalbox  p:last-of-type {
    margin-bottom:0;
}

How should I remove the gap effect? CSS or a server side code or something is WYSIWYG?

Ali Sheikhpour
  • 10,475
  • 5
  • 41
  • 82

2 Answers2

1

Use :empty selector to target those WYSIWYG's empty p elements:

p:empty {
  margin: 0;
}

You can also combine with :not() to select not empty p elements:

p:not(:empty) { }
Julius Dzidzevičius
  • 10,775
  • 11
  • 36
  • 81
0

TinyMCE has an available plugin that allows you to edit the code of your output. Is that option available to you? If not, try this:

.generalbox {
    margin-top: -10px;
}

.generalbox + p {
    margin-bottom:0;
}
i7nvd
  • 1,318
  • 2
  • 10
  • 24
  • have html editor button in tinymce but the operators are not professional enough to edit the codes. Besides... Where does 10px come from? is it the default margin of '

    ' element?

    – Ali Sheikhpour Dec 09 '16 at 14:40
  • 10px is variable - use whatever margin the empty

    produces.

    – i7nvd Dec 09 '16 at 16:11