0

我正在使用 LESS CSS,我有以下情况。如果有办法进一步优化 LESS 代码,你能建议我吗?

如您所见,有许多对象在它们之间共享属性,但每个对象也有自己特定的自定义。

谢谢

footer a
{
  font-weight:bold;

    &#acme, 
    &#email_footer, 
    &#browser_ok, 
    &#browser_old
    {
      display:inline-block;
      position:relative;
      white-space:nowrap;
      background:url('footer_items.png') no-repeat;
      text-align:left;
      text-indent:-9999px;
      border:none;
    }

    &#acme
    {
      width:130px;
      height:25px;
      top:1px;
      background-position:-90px 0;

        &:hover
        {
          background-position:-90px -25px;
        }

        &:active
        {
          top:0px;
        }
    }

    &#email_footer,
    &#browser_ok,
    &#browser_old
    {
      width:38px;
      height:31px;
      top:-3px;
    }


    &#email_footer
    {
      background-position:-230px 0;

        &:hover
        {
          background-position:-230px -31px;
        }

        &:active
        {
          top:-2px;
        }
    }

    &#browser_ok,
    &#browser_old
    {
      background-position:0 -2px;

        &:active
        {
          top:-2px;
        }
    }

    &#browser_ok
    {
      background-position:0 -2px;

        &:hover
        {
          background-position:0 -35px;
        }
    }

    &#browser_old
    {
      background-position:-45px -2px;

        &:hover
        {
          background-position:-45px -35px;
        }
    }
}
4

1 回答 1

1

看起来你仍然可以将一些东西组合在一起。特别是您的一些:active代码和一些background-position信息。为了保留新组合的:activeafter :hover,我将包含它的定义移到了额外定义的下方,这对您的代码无关紧要。总之,它减少了 7 行代码。

footer a
{
  font-weight:bold;

    &#acme, 
    &#email_footer, 
    &#browser_ok, 
    &#browser_old
    {
      display:inline-block;
      position:relative;
      white-space:nowrap;
      background:url('footer_items.png') no-repeat;
      text-align:left;
      text-indent:-9999px;
      border:none;
    }

    &#acme
    {
      width:130px;
      height:25px;
      top:1px;
      background-position:-90px 0;

        &:hover
        {
          background-position:-90px -25px;
        }

        &:active
        {
          top:0px;
        }
    }

    &#email_footer
    {
      background-position:-230px 0;

        &:hover
        {
          background-position:-230px -31px;
        }

    }

    &#browser_ok,
    &#browser_old
    {
      background-position:0 -2px;   
    }

    &#browser_ok
    {   
        &:hover
        {
          background-position:0 -35px;
        }
    }

    &#browser_old
    {
      background-position:-45px -2px;

        &:hover
        {
          background-position:-45px -35px;
        }
    }

    &#email_footer,
    &#browser_ok,
    &#browser_old
    {
      width:38px;
      height:31px;
      top:-3px;

        &:active
        {
          top:-2px;
        }
    }
}
于 2013-05-25T18:16:51.620 回答