Fixed position but relative to container

后端 未结 25 1631
独厮守ぢ
独厮守ぢ 2020-11-21 23:52

I am trying to fix a div so it always sticks to the top of the screen, using:

position: fixed;
top: 0px;
right: 0px;

However,

25条回答
  •  遇见更好的自我
    2020-11-22 00:46

    The magic is to take the screen width minus the container width and divide it by 2:

    //1400px is according to container max-width (left can be also right)
    .fixed {
      position: fixed;
      right: calc((100vw - 1400px)/2);
    }
    

    Note: css calc() function is almost, but not 100% supported. For most use-cases it is definitely supported enough. Click here for more details

    Snippet (with a 300px container just to fit this website's widget):

    .container {
      max-width: 300px;
      margin-left: auto;
      margin-right: auto;
    }
    
    
    .fixed {
      position: fixed;
      right: calc((100vw - 300px)/2);
    }
    
    
    @media screen and (max-width: 300px) {
      right: 0px;
    }
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum, eum? Animi quidem accusamus minima vel, dolorem suscipit quia accusantium minus harum modi commodi distinctio! Iste voluptatum earum quam voluptate culpa ad, ipsum dolorum recusandae quis atque eligendi necessitatibus magnam nisi dolores beatae qui? Perspiciatis natus cum nostrum in quod odio sapiente doloremque rerum quo dolore tenetur facere, quisquam atque accusamus fugiat eligendi, deleniti nisi minus recusandae distinctio dignissimos! Dicta quos ipsum qui pariatur at vel veritatis veniam quisquam minus modi et voluptas aliquam laborum, cumque in quo magnam sapiente. Expedita ut dolore laboriosam tempora reprehenderit vero eaque blanditiis, cumque voluptatibus, velit nemo, veniam tenetur quisquam numquam adipisci quae odio repellendus neque incidunt! Cum odio corporis soluta voluptate nesciunt, quasi nobis deleniti neque porro expedita fugiat placeat alias autem pariatur animi error, dicta veritatis atque perspiciatis inventore tempora dolor ad! Mollitia in dolorem ipsam eos porro magni perspiciatis possimus maiores, itaque facere ut. Eos culpa eum error quia incidunt repellendus quam possimus, asperiores earum ipsum molestias dicta sint fugit atque veniam dolorum illo? Officia harum sint incidunt totam, reiciendis illum eos maxime sequi neque repellat quis, expedita eum, corporis quaerat nemo qui soluta aspernatur animi. Sint ad rem numquam omnis sit.

提交回复
热议问题