How do I center floated elements?

前端 未结 12 2564
谎友^
谎友^ 2020-11-22 00:16

I\'m implementing pagination, and it needs to be centered. The problem is that the links need to be displayed as block, so they need to be floated. But then, text-alig

相关标签:
12条回答
  • 2020-11-22 00:48

    IE7 doesn't know inline-block. You must add:

    display:inline;
    zoom: 1;
    
    0 讨论(0)
  • 2020-11-22 00:54

    You can also do this by changing .pagination by replacing "text-align: center" with two to three lines of css for left, transform and, depending on circumstances, position.

    .pagination {
      left: 50%; /* left-align your element to center */
      transform: translateX(-50%); /* offset left by half the width of your element */
      position: absolute; /* use or dont' use depending on element parent */
    }
    .pagination a {
      display: block;
      width: 30px;
      height: 30px;
      float: left;
      margin-left: 3px;
      background: url(/images/structure/pagination-button.png);
    }
    .pagination a.last {
      width: 90px;
      background: url(/images/structure/pagination-button-last.png);
    }
    .pagination a.first {
      width: 60px;
      background: url(/images/structure/pagination-button-first.png);
    }
    <div class='pagination'>
      <a class='first' href='#'>First</a>
      <a href='#'>1</a>
      <a href='#'>2</a>
      <a href='#'>3</a>
      <a class='last' href='#'>Last</a>
    </div>
    <!-- end: .pagination -->

    0 讨论(0)
  • 2020-11-22 00:54

    Just adding

    left:15%; 
    

    into my css menu of

    #menu li {
    float: left;
    position:relative;
    left: 15%;
    list-style:none;
    }
    

    did the centering trick too

    0 讨论(0)
  • 2020-11-22 00:55

    I think the best way is using margin instead of display.

    I.e.:

    .pagination a {
        margin-left: auto;
        margin-right: auto;
        width: 30px;
        height: 30px;    
        background: url(/images/structure/pagination-button.png);
    }
    

    Check the result and the code:

    http://cssdeck.com/labs/d9d6ydif

    0 讨论(0)
  • 2020-11-22 00:56

    Using Flex

    .pagination {
      text-align: center;
      display:flex;
      justify-content:center;
    }
    .pagination a {
      display: block;
      width: 30px;
      height: 30px;
      float: left;
      margin-left: 3px;
      background: url(/images/structure/pagination-button.png);
    }
    .pagination a.last {
      width: 90px;
      background: url(/images/structure/pagination-button-last.png);
    }
    .pagination a.first {
      width: 60px;
      background: url(/images/structure/pagination-button-first.png);
    }
    <div class='pagination'>
      <a class='first' href='#'>First</a>
      <a href='#'>1</a>
      <a href='#'>2</a>
      <a href='#'>3</a>
      <a class='last' href='#'>Last</a>
    </div>
    <!-- end: .pagination -->

    0 讨论(0)
  • 2020-11-22 00:57

    Since many years I use an old trick I learned in some blog, I'm sorry i don't remember the name to give him credits.

    Anyway to center floating elements this should work:

    You need a structure like this:

        .main-container {
          float: left;
          position: relative;
          left: 50%;
        }
        .fixer-container {
          float: left;
          position: relative;
          left: -50%;
        }
    <div class="main-container">
      <div class="fixer-container">
        <ul class="list-of-floating-elements">
    
          <li class="floated">Floated element</li>
          <li class="floated">Floated element</li>
          <li class="floated">Floated element</li>
    
        </ul>
      </div>
    </div>

    the trick is giving float left to make the containers change the width depending on the content. Than is a matter of position:relative and left 50% and -50% on the two containers.

    The good thing is that this is cross browser and should work from IE7+.

    0 讨论(0)
提交回复
热议问题