Skip to content

Extra Blank Spaces Between Elements In Rendered Template #7701

Closed
@dsanders11

Description

@dsanders11

Version

2.5.13

Reproduction link

https://jsfiddle.net/aoxo2rod/8/

Steps to reproduce

Run the JSFiddle

What is expected?

The background should be green, styled by ul:empty, as the children of ul are all conditionally not rendered: empty v-for and v-if that evaluate to false.

What is actually happening?

The background is red, ul:empty is not used because there is a blank space inside the ul tags, which CSS doesn't consider to be :empty.


The multiple children elements are important, a single li element with v-if="false" will produce the correct result. It appears Vue is putting a blank space between the elements, even if they are conditionally not rendered (appearing as <!----> instead). It's worth noting that if you manually remove the extra spaces using developer tools, everything looks as expected, <!----> does not affect :empty.

Furthermore, this only reproduces if there is a newline between the elements. Modifying the provided JSFiddle to only have the two li with v-if="false" will produce the correct result if there's no newline between them. So Vue seems to be turning the newline between the elements into a single space, which is causing the issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions