CSS: Khối ở giữa, nhưng căn chỉnh nội dung ở bên trái


81

Tôi muốn toàn bộ khối được căn giữa trong phần cha của nó, nhưng tôi muốn nội dung của khối được căn trái.

Ví dụ phục vụ tốt nhất

Trên trang này :

http://yaml-online-parser.appspot.com/?yaml=%23+ASCII+Art%0d%0a---+%7c%0d%0a++%5c%2f%2f%7c%7c%5c% 2f% 7c% 7c% 0d% 0a ++% 2f% 2f +% 7c% 7c ++% 7c% 7c __% 0d% 0a & type = python

ascii art nên được căn giữa (như nó xuất hiện) nhưng nó phải thẳng hàng và trông giống như "YAML".

Hoặc cái này:

http://yaml-online-parser.appspot.com/?yaml=%3f+-+Detroit+Tigers%0d%0a++-+Chi Chicago+cubs%0d%0a%3a%0d%0a++-+2001-07-23 % 0d% 0a% 0d% 0a% 3f +% 5b + New + York + Yankees% 2c% 0d% 0a ++++ Atlanta + Braves +% 5d% 0d% 0a% 3a +% 5b + 2001-07-02% 2c + 2001-08-12% 2c% 0d% 0a ++++ 2001-08-14 +% 5d% 0d% 0a

tất cả thông báo lỗi sẽ thành dòng như trong bảng điều khiển.

Câu trả lời:


163

Đầu tiên, hãy tạo một phụ huynh divtập trung nội dung con của nó text-align: center. Tiếp theo, tạo một phần tử con divsử dụng display: inline-blockđể thích ứng với chiều rộng của các phần tử con của nó và text-align: leftlàm cho nội dung mà nó lưu giữ căn chỉnh sang trái như mong muốn.

<div style="text-align: center;">
    <div style="display: inline-block; text-align: left;">
        Centered<br />
        Content<br />
        That<br />
        Is<br />
        Left<br />
        Aligned
    </div>
</div>


5
Rõ ràng và hiệu quả. Cảm ơn bạn!
mờbear3965

11
không làm việc kể từ ngay sau khi một đơn dòng văn bản không phù hợp trên cùng một dòng nó kết thúc tốt đẹp các văn bản và kết quả trong khối là toàn bộ chiều rộng nhưng bản có giá thấp hơn chiều rộng đầy đủ, vì vậy mặc dù khối tập trung nó doesn 'không quan trọng vì văn bản KHÔNG phải là chiều rộng đầy đủ của khối chứa. Để biết ví dụ, hãy tham khảo sơ đồ 2a của stackoverflow.com/questions/8702802/…
user3338098 Ngày

Đơn giản và đẹp! Cảm ơn
Cesar Bielich

3
@ user3338098 Nó hoạt động, trong trường hợp của bạn, bạn cần đặt chiều rộng tối đa cho văn bản của mình để ngăn khối mở rộng đến kích thước không mong muốn. Tôi thực sự chỉ áp dụng logic chính xác này vào công việc của mình và đã có thể đạt được sơ đồ 1b + 2b.
Đánh dấu

20

Đăng lại câu trả lời làm việc từ câu hỏi khác: Làm thế nào để căn giữa theo chiều ngang một phần tử nổi có chiều rộng thay đổi?

Giả sử phần tử được thả nổi và sẽ được căn giữa là một div có id = "content" ...

<body>
<div id="wrap">
   <div id="content">
   This will be centered
   </div>
</div>
</body>

Và áp dụng CSS sau

#wrap {
    float: left;
    position: relative;
    left: 50%;
}

#content {
    float: left;
    position: relative;
    left: -50%;
}

Đây là tài liệu tham khảo tốt về http://dev.opera.com/articles/view/35-floats-and-clearing/#centeringfloats


Cũng hoạt động tốt với bản thể "bọc" prevà "nội dung" code.
Serge Stroobandt

không hoạt động vì ngay khi This will be centeredkhông vừa trên một dòng, nó sẽ bao bọc văn bản và kết quả là khối có chiều rộng đầy đủ nhưng văn bản nhỏ hơn chiều rộng đầy đủ, vì vậy mặc dù khối được căn giữa, nó không quan trọng vì văn bản KHÔNG phải là chiều rộng đầy đủ của khối chứa. Để biết ví dụ, hãy tham khảo sơ đồ 2a của stackoverflow.com/questions/8702802/… .
user3338098

Cố gắng tránh sử dụng các giá trị âm! Nó sẽ không hoạt động chính xác trong tất cả các trình duyệt.
Grasper

4

Nếu tôi hiểu rõ về bạn, bạn cần sử dụng để căn giữa một vùng chứa (hoặc khối)

margin-left: auto;
margin-right: auto;

và để căn trái nội dung của nó:

text-align: left;

vậy, tôi phải đặt gì trên <pre> và <code> của mình? Tôi đã thử các biến thể trên đó và không thành công.
Paul Tarjan

bạn đã thử sử dụng một lớp css chưa?
eKek0

ngoài ra, bạn có thể sử dụng div vùng chứa cho> pre>
eKek0

2
tôi đang thử một div container và cách duy nhất để làm cho nó hoạt động là với chiều rộng cố định (mà tôi không muốn).
Paul Tarjan

2

Thông thường, bạn nên sử dụng tự động margin: 0 trên div như đã đề cập trong các câu trả lời khác, nhưng bạn sẽ phải chỉ định chiều rộng cho div. Nếu bạn không muốn chỉ định chiều rộng, bạn cũng có thể (điều này tùy thuộc vào những gì bạn đang cố gắng thực hiện) sử dụng lề, chẳng hạn như margin: 0 200px; , điều này sẽ làm cho nội dung của bạn có vẻ như được tập trung, bạn cũng có thể thấy câu trả lời của Leyu cho câu hỏi của tôi


đáng buồn là giải pháp của bạn tạo ra một vùng tràn với một thanh cuộn ngang bắt buộc. Thêm tràn: ẩn vào phần tử mẹ là không tốt vì đầu ra của tôi có thể đủ dài để đảm bảo thanh cuộn. Xin lỗi :(
Paul Tarjan

Trên thực tế, đó không phải là giải pháp của tôi như tôi đã giới thiệu, nhưng dù sao, tôi không hiểu ý bạn là tràn: ẩn bắt buộc thanh cuộn, nó sẽ ẩn nội dung chứ không buộc thanh cuộn.
Waleed Eissa

Giải pháp trong bài đăng của bạn gây ra một thanh cuộn ngang vì nội dung thực sự được chuyển sang bên phải 50%. Điều này yêu cầu một lỗi tràn: ẩn để loại bỏ cái không phù hợp với tôi.
Paul Tarjan

2

Tôi đã tìm thấy cách dễ nhất để căn giữa và căn trái văn bản bên trong vùng chứa là như sau:

HTML:

<div>
  <p>Some interesting text.</p>
</div>

CSS:

P {
  width: 50%; //or whatever looks best
  margin: auto; //top and bottom margin can be added for aesthetic effect
}

Hy vọng đây là những gì bạn đang tìm kiếm vì tôi đã mất khá nhiều thời gian tìm kiếm chỉ để tìm ra giải pháp khá cơ bản này.


1
<div>
    <div style="text-align: left; width: 400px; border: 1px solid black; margin: 0 auto;">
         <pre>
Hello
Testing
Beep
         </pre>
    </div>
</div>

ngoài ra, tôi không muốn chiều rộng: 400px. có thể mà không có điều đó?
Paul Tarjan

Vấn đề là một phần tử cấp khối sẽ mở rộng để lấp đầy chiều rộng lớn nhất có thể trừ khi bạn đặt giới hạn cho nó.
Amber

Vì vậy, những gì tôi muốn làm là không thể?
Paul Tarjan

Có thể là ai đó biết một bí mật mà tôi không biết, nhưng theo hiểu biết của tôi thì có.
Amber

Tôi đồng ý với Dav. Có lẽ, bạn có thể xem qua tinyMCE hoặc một trình soạn thảo văn bản đa dạng thức khác cho phép tùy chỉnh nhiều hơn so với kho văn bản HTML tiêu chuẩn. Thật không may, cuối cùng bạn có thể mất nhiều thời gian với một kết quả khó hiểu. Chúc may mắn!
mkelley33

1

Đây có phải là những gì bạn đang tìm kiếm? Hộp linh hoạt ...

.container{
  display: flex;
  flex-flow: row wrap;
  justify-content: center;
  align-content: center;
  align-items: center;
}
.inside{
  height:100px;
  width:100px;
  background:gray;
  border:1px solid;
}
<section class="container">
  <section class="inside">
    A
  </section>
  <section class="inside">
    B
  </section>
  <section class="inside">
    C
  </section>
</section>


-1

Những công việc này

<div style="display:inline-block;margin:10px auto;">
    <ul style="list-style-type:none;">
        <li style="text-align:left;"><span class="red"></span> YouTube AutoComplete Keyword Scraper software <em>root keyword text box</em>.</li>
        <li style="text-align:left;"><span class="red"></span> YouTube.com website <em>video search text box</em>.</li>
        <li style="text-align:left;"><span class="red"></span> YouTube AutoComplete Keyword Scraper software <em>scraped keywords listbox</em>.</li>
        <li style="text-align:left;"><span class="red"></span> YouTube AutoComplete Keyword Scraper software <em>right click context menu</em>.</li>
    </ul>
</div>

3
Bạn có thể giải thích mã của bạn và những lợi thế và bất lợi của nó? Bằng cách đó, những người khác có thể học hỏi từ nó thay vì chỉ sao chép và dán một cái gì đó mà họ có thể hiểu hoặc không hiểu đầy đủ.
Robert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.