Leaving out the last semicolon of a CSS block

后端 未结 9 639
梦毁少年i
梦毁少年i 2020-11-27 15:43

A couple of questions concerning this:

  • Is it good practice?
  • Will it, on a large scale, result in better load times?
  • Can it result in browsers
9条回答
  •  暖寄归人
    2020-11-27 16:35

    Is it good practice?

    It's not good practice to manually exclude semicolons. This is purely because it's easy to overlook when adding more styles, especially if you're working in a team:

    Imagine you start with:

    .foo {
        background-color: #F00;
        color: #000             <-- missing semi-colon
    }
    

    And then someone adds some styles:

    .foo {
        background-color: #F00;
        color: #000             <-- missing semi-colon
        width: 30px;
        z-index: 100;
    }
    

    Suddenly the other developer is wasting time figuring out why their width declaration isn't working (or worse yet, doesn't notice that it's not working). It's safer to leave the semi-colons in.

    Will it, on a large scale, result in better load times?

    Most definitely, for every block, you'd save a couple of bytes. These add up, especially for large style sheets. Instead of worrying about these performance gains yourself, it's better to use a CSS compressor, such as the YUI Compressor to automatically remove the ending semi-colons for you.

    Can it result in browsers 'breaking'?

    No, it's safe, as browsers implement this part of the specification correctly. The CSS2 specification defines a declaration thusly:

    A declaration is either empty or consists of a property name, followed by a colon (:), followed by a property value.

    More importantly:

    ...multiple declarations for the same selector may be organized into semicolon (;) separated groups.

    This means that ; is used to separate multiple declarations, but it is not needed to terminate them.

    Is the same true for the last function in JavaScript?

    JavaScript is a whole different beast with a completely different specification. This particular question has been answered in depth many times before on Stack Overflow.

提交回复
热议问题