Làm cách nào tôi có thể sắp xếp lại các div của mình chỉ bằng CSS?


266

Đưa ra một mẫu trong đó HTML không thể được sửa đổi do các yêu cầu khác, làm thế nào có thể hiển thị (sắp xếp lại) một mẫu divkhác divkhi chúng không theo thứ tự đó trong HTML? Cả hai đều divchứa dữ liệu khác nhau về chiều cao và chiều rộng.

<div id="wrapper">
    <div id="firstDiv">
        Content to be below in this situation
    </div>
    <div id="secondDiv">
        Content to be above in this situation
    </div>
</div>
Other elements

Hy vọng rằng rõ ràng là kết quả mong muốn là:

Content to be above in this situation
Content to be below in this situation
Other elements

Khi kích thước được cố định, bạn có thể dễ dàng định vị chúng khi cần, nhưng tôi cần một số ý tưởng khi nội dung có thể thay đổi. Vì lợi ích của kịch bản này, vui lòng chỉ xem xét chiều rộng là 100% cho cả hai.

Tôi đặc biệt tìm kiếm một giải pháp chỉ dành cho CSS (và có lẽ nó sẽ phải được đáp ứng với các giải pháp khác nếu điều đó không xảy ra).

Có những yếu tố khác theo sau này. Một đề nghị tốt đã được đề cập với kịch bản giới hạn mà tôi đã chứng minh cho rằng đó có thể là câu trả lời hay nhất, nhưng tôi đang tìm cách đảm bảo các yếu tố theo sau điều này không bị ảnh hưởng.

Câu trả lời:


279

Giải pháp này chỉ sử dụng CSS và hoạt động với nội dung thay đổi

#wrapper   { display: table; }
#firstDiv  { display: table-footer-group; }
#secondDiv { display: table-header-group; }

3
Đẹp! Mặc dù không hoạt động cho IE8 hoặc thấp hơn nhưng bạn có thể sử dụng tập lệnh có điều kiện cho các trình duyệt đó ...
Stuart Wakefield

1
Đúng là nó không hoạt động cho IE7, nhưng tôi không có vấn đề gì với IE8
Jordi

3
Có, điều này rất tốt cho việc sắp xếp lại nội dung trên thiết bị di động và mối quan tâm của IE nằm ngoài cửa sổ! Hãy nghĩ các menu được xác định đầu tiên và xuất hiện ở bên trái cho bố cục bình thường, nhưng bạn muốn chúng xuất hiện ở phía dưới trên màn hình di động hẹp. Đây là thủ thuật rất độc đáo.
thái

13
Cần lưu ý rằng điều này không hoạt động với phao. Bạn phải đặt float: none; nếu bạn đã có một bộ float.
Thomas

5
Lưu ý: img { max-width: 100% }sẽ không hoạt động bên trong các yếu tố được sắp xếp lại.
Jonas ppelgran

240

Giải pháp chỉ dành cho CSS (hoạt động cho IE10 + ) - sử dụng thuộc tính của Flexbox order:

Bản trình diễn: http://jsfiddle.net/hqya7q6o/596/

#flex { display: flex; flex-direction: column; }
#a { order: 2; }
#b { order: 1; }
#c { order: 3; }
<div id="flex">
   <div id="a">A</div>
   <div id="b">B</div>
   <div id="c">C</div>
</div>

Thông tin thêm: https://developer.mozilla.org/en-US/docs/Web/CSS/order


1
Đặt hàng làm việc ở đây. Nhưng trẻ em không được chiều rộng 100%. Thay vào đó, họ đang chia sẻ không gian của họ trong cùng một hàng. Bất kỳ ý tưởng làm thế nào 100% chiều rộng có thể được sử dụng cho mỗi đứa trẻ với phương pháp này?
aniskhan001

8
#flex { display: flex; flex-direction: column; }sẽ hiển thị hàng 100% chiều rộng. jsfiddle.net/2fcj8s9e
Justin

Nó có thể được thực hiện bằng cách sử dụng transformvới trình duyệt suppport rộng hơn
Finesse

Không được hỗ trợ trên iPhone 6s trở xuống
AntonAL

4
Giải pháp này cho phép bạn chọn bất kỳ thứ tự mong muốn cho bất kỳ số lượng div. Đây phải là giải pháp IMO được chấp nhận.
mareoraft

83

Như những người khác đã nói, đây không phải là điều bạn muốn làm trong CSS. Bạn có thể làm mờ nó với định vị tuyệt đối và lề lạ, nhưng đó không phải là một giải pháp mạnh mẽ. Tùy chọn tốt nhất trong trường hợp của bạn sẽ là chuyển sang javascript. Trong jQuery, đây là một nhiệm vụ rất đơn giản:

$('#secondDiv').insertBefore('#firstDiv');

hoặc rộng rãi hơn:

$('.swapMe').each(function(i, el) {
    $(el).insertBefore($(el).prev());
});

2
Đôi khi tốt nhất của nó để mang lại cho những người mạnh mẽ hơn. Trong trường hợp này, cảm giác thanh lịch hơn và bạn đang kiểm soát thực sự. Vì lý do đó tôi cảm thấy điều này gọn gàng hơn và tốt hơn.
hạ cánh

35

Điều này có thể được thực hiện bằng cách sử dụng Flexbox.

Tạo một thùng chứa áp dụng cả hai màn hình: flexflex-Flow: cột ngược .

/* -- Where the Magic Happens -- */

.container {
  
  /* Setup Flexbox */
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;

  /* Reverse Column Order */
  -webkit-flex-flow: column-reverse;
  flex-flow: column-reverse;

}


/* -- Styling Only -- */

.container > div {
  background: red;
  color: white;
  padding: 10px;
}

.container > div:last-of-type {
  background: blue;
}
<div class="container">
  
  <div class="first">

     first

  </div>
  
  <div class="second">

    second

  </div>
  
</div>

Nguồn:


25

Hoàn toàn không có cách nào để đạt được những gì bạn muốn thông qua CSS một mình trong khi hỗ trợ các tác nhân người dùng pre-flexbox ( chủ yếu là IE cũ ) - trừ khi :

  1. Bạn biết chiều cao được hiển thị chính xác của từng yếu tố (nếu vậy, bạn hoàn toàn có thể định vị nội dung). Nếu bạn đang xử lý nội dung được tạo động, bạn sẽ không gặp may.
  2. Bạn biết số lượng chính xác của các yếu tố này sẽ có. Một lần nữa, nếu bạn cần làm điều này cho một số nội dung được tạo động, bạn sẽ không gặp may, đặc biệt là nếu có nhiều hơn ba hoặc nhiều hơn.

Nếu những điều trên là đúng thì bạn có thể làm những gì bạn muốn bằng cách định vị hoàn toàn các yếu tố -

#wrapper { position: relative; }
#firstDiv { position: absolute; height: 100px; top: 110px; }
#secondDiv { position: absolute; height: 100px; top: 0; }

Một lần nữa, nếu bạn không biết chiều cao muốn ít nhất là #firstDiv, không có cách nào bạn có thể làm những gì bạn muốn chỉ qua CSS. Nếu bất kỳ nội dung này là động, bạn sẽ phải sử dụng javascript.


OK, tôi cũng đánh giá thấp điều này, đầu tiên, nhưng hoàn nguyên. Tuy nhiên, một chút tinh chỉnh vẫn là do các điều kiện: bạn không cần phải biết chính xác số lượng phần tử để sắp xếp lại, trừ khi số đó là> 3 (xem câu trả lời thắng tiền thưởng ). Điều này có liên quan đặc biệt đối với OP đặc biệt chỉ muốn trao đổi 2 mặt hàng.
Sz.

16

Đây là một giải pháp:

<style>
#firstDiv {
    position:absolute; top:100%;
}
#wrapper {
    position:relative; 
}

Nhưng tôi nghi ngờ bạn có một số nội dung theo sau div trình bao bọc ...


Có ... cố gắng không quá lời với tình huống, nhưng có những yếu tố khác theo sau. Đề xuất tốt mặc dù được cung cấp HTML giới hạn được cung cấp - có thể hoạt động cho người khác.
devmode

7

Với mô-đun bố trí flexbox CSS3, bạn có thể đặt hàng div.

#wrapper {
  display: flex;
  flex-direction: column;
}
#firstDiv {
  order: 2;
}

<div id="wrapper">
  <div id="firstDiv">
    Content1
  </div>
  <div id="secondDiv">
    Content2
  </div>
</div>

5

Nếu bạn biết hoặc có thể thực thi kích thước cho phần tử được đặt phía trên, bạn có thể sử dụng

position : absolute;

Trong css của bạn và cung cấp cho các div vị trí của họ.

mặt khác, javascript dường như là cách duy nhất để đi:

fd = document.getElementById( 'firstDiv' );
sd = document.getElementById( 'secondDiv' );
fd.parentNode.removeChild( fd );
sd.parentNode.insertAfter( fd, sd );

hoặc một cái gì đó tương tự.

chỉnh sửa: Tôi chỉ tìm thấy cái này có thể hữu ích: tài liệu w3 css3 chuyển đến


5

Lợi nhuận hàng đầu tiêu cực có thể đạt được hiệu ứng này, nhưng chúng sẽ cần được tùy chỉnh cho mỗi trang. Chẳng hạn, đánh dấu này ...

<div class="product">
<h2>Greatest Product Ever</h2>
<p class="desc">This paragraph appears in the source code directly after the heading and will appear in the search results.</p>
<p class="sidenote">Note: This information appears in HTML after the product description appearing below.</p>
</div>

... và CSS này ...

.product { width: 400px; }
.desc { margin-top: 5em; }
.sidenote { margin-top: -7em; }

... sẽ cho phép bạn kéo đoạn thứ hai lên trên đoạn thứ nhất.

Tất nhiên, bạn sẽ phải điều chỉnh CSS theo cách thủ công cho các độ dài mô tả khác nhau để đoạn giới thiệu tăng số lượng thích hợp, nhưng nếu bạn có quyền kiểm soát giới hạn đối với các phần khác và toàn quyền kiểm soát đánh dấu và CSS thì đây có thể là một tùy chọn .


4

Chà, với một chút định vị tuyệt đối và một số cài đặt lề khéo léo, tôi có thể đến gần, nhưng nó không hoàn hảo hoặc đẹp:

#wrapper { position: relative; margin-top: 4em; }
#firstDiv { position: absolute; top: 0; width: 100%; }
#secondDiv { position: absolute; bottom: 0; width: 100%; }

"Lề-top: 4em" là bit đặc biệt khó chịu: lề này cần được điều chỉnh theo lượng nội dung trong FirstDiv. Tùy thuộc vào yêu cầu chính xác của bạn, điều này có thể khả thi, nhưng dù sao tôi cũng hy vọng rằng ai đó có thể xây dựng dựa trên điều này cho một giải pháp vững chắc.

Nhận xét của Eric về JavaScript có lẽ nên được theo đuổi.


3

Điều này chỉ có thể được thực hiện với CSS!

Vui lòng kiểm tra câu trả lời của tôi cho câu hỏi tương tự này:

https://stackoverflow.com/a/25462829/1077230

Tôi không muốn đăng gấp đôi câu trả lời của mình, nhưng ngắn gọn là phụ huynh cần phải trở thành một thành phần flexbox. Ví dụ:

(chỉ sử dụng tiền tố nhà cung cấp webkit tại đây.)

#main {
    display: -webkit-box;
    display: -webkit-flex;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-flex-direction: column;
    flex-direction: column;
    -webkit-box-align: start;
    -webkit-align-items: flex-start;
    align-items: flex-start;
}

Sau đó, trao đổi div xung quanh bằng cách chỉ ra thứ tự của họ với:

#main > div#one{
    -webkit-box-ordinal-group: 2;
    -moz-box-ordinal-group: 2;
    -ms-flex-order: 2;
    -webkit-order: 2;
    order: 2;
    overflow:visible;
}

#main > div#two{
    -webkit-box-ordinal-group: 1;
    -moz-box-ordinal-group: 1;
    -ms-flex-order: 1;
    -webkit-order: 1;
    order: 1;
}

3

Trong CSS của bạn, thả div đầu tiên theo trái hoặc phải. Float div thứ hai bằng trái hoặc phải giống như đầu tiên. Áp dụng clear: lefthoặc rightgiống như hai div trên cho div thứ hai.

Ví dụ:

#firstDiv {
    float: left;
}

#secondDiv {
    float: left;
    clear: left;
}

<div class = "container"> <div id = "secondDiv"> <p> ... </ p> </ div> <div id = "firstDiv"> <p> ... </ p> </ div> </ div>
Vestel

Trong trường hợp của tôi nổi: đúng; rõ ràng: trái; làm việc hoàn hảo
user956584

sử dụng rõ ràng là cách tuyệt vời, nhưng lưu ý bạn nên thả phần tử của mình theo đúng hướng và bạn cũng nên thả nổi tất cả các phần tử khác để làm đúng. Vestel bạn nên sử dụng một số kiểu như thế này: <style> #secondDiv, #firstDiv {float: left; } #firstDiv {xóa: trái; } </ style> <div class = "container"> container <div id = "secondDiv"> <p> secondDiv </ p> </ div> <div id = "firstDiv"> <p> firstDiv </ p> </ div> </ div>
Reza Amya

3

Nếu bạn chỉ sử dụng css, bạn có thể sử dụng flex.

.price {
    display: flex;
    align-items: center;
    justify-content: center;

    flex-direction: row-reverse; //revert horizontally
    //flex-direction: column-reverse; revert vertically
}
<div class="price">
      <div>first block</div>
      <div>second block</div>
</div>


2

Tôi đang tìm cách thay đổi thứ tự của các div chỉ dành cho phiên bản di động để sau đó tôi có thể tạo kiểu độc đáo. Nhờ có nickf trả lời, tôi đã tạo ra đoạn mã này hoạt động tốt cho những gì tôi muốn, vì vậy tôi mặc dù đã chia sẻ nó với các bạn:

//  changing the order of the sidebar so it goes after the content for mobile versions
jQuery(window).resize(function(){
    if ( jQuery(window).width() < 480 )
    {
        jQuery('#main-content').insertBefore('#sidebar');
    }
    if ( jQuery(window).width() > 480 )
    {
        jQuery('#sidebar').insertBefore('#main-content');
    }
    jQuery(window).height(); // New height
    jQuery(window).width(); // New width
});

1

Một giải pháp có hỗ trợ trình duyệt lớn hơn sau đó là flexbox (hoạt động trong IE≥9):

#wrapper {
  -webkit-transform: scaleY(-1);
  -ms-transform: scaleY(-1);
  transform: scaleY(-1);
}
#wrapper > * {
  -webkit-transform: scaleY(-1);
  -ms-transform: scaleY(-1);
  transform: scaleY(-1);
}
<div id="wrapper">
    <div id="firstDiv">
        Content to be below in this situation
    </div>
    <div id="secondDiv">
        Content to be above in this situation
    </div>
</div>
Other elements

Ngược lại với display: table;giải pháp giải pháp này hoạt động khi .wrappercó bất kỳ số lượng trẻ em.


Nếu div chứa hình ảnh> thì sao?
Ramji Seetharaman

0

Chỉ cần sử dụng flex cho div cha bằng cách chỉ định display: flexflex-direction : column. Sau đó sử dụng thứ tự để xác định div con nào đến trước


2
Tại sao bạn nghĩ câu trả lời này cho câu hỏi cũ 7y tốt hơn những câu hỏi đã được đăng? Nếu bạn muốn tham gia vào SO, vui lòng tìm câu hỏi mà không có câu trả lời (tốt) và cố gắng trả lời chúng theo cách hữu ích cho tất cả khách truy cập.
Marki555

-1

CSS thực sự không nên được sử dụng để cấu trúc lại phần phụ trợ HTML. Tuy nhiên, có thể nếu bạn biết chiều cao của cả hai yếu tố liên quan và đang cảm thấy bị hack. Ngoài ra, lựa chọn văn bản sẽ bị rối khi đi giữa các div, nhưng đó là vì thứ tự HTML và CSS ngược nhau.

#firstDiv { position: relative; top: YYYpx; height: XXXpx; }
#secondDiv { position: relative; top: -XXXpx; height: YYYpx; }

Trong đó XXX và YYY là chiều cao của FirstDiv và secondDiv tương ứng. Điều này sẽ làm việc với các yếu tố dấu, không giống như câu trả lời hàng đầu.


Vậy thì " nên dùng cái gì để tái cấu trúc HTML" khi nói, đặt nội dung trước khi điều hướng cho trình đọc màn hình?
Damian Yerrick

-1

Tôi có một mã tốt hơn nhiều, do tôi tạo ra, nó rất lớn, chỉ để hiển thị cả hai thứ ... tạo một bảng 4 x 4 và sắp xếp theo chiều dọc không chỉ là một ô.

Nó không sử dụng bất kỳ hack IE nào, không có dọc-align: middle; ở tất cả...

Nó không sử dụng cho bảng hiển thị định tâm dọc, màn hình: bảng-rom; hiển thị: ô bảng;

Nó sử dụng thủ thuật của một container có hai div, một ẩn (vị trí không phải là chính xác nhưng làm cho cha mẹ có kích thước biến chính xác), một hiển thị ngay sau khi ẩn nhưng với đỉnh: -50%; Vì vậy, nó là động lực để sửa vị trí.

Xem các lớp div tạo ra mánh khóe: BloqueTipoContenedor BloqueTipoContenedor_V verticalmenteCentrado BloqueTipoContenido_V verticalmenteCentrado_Oculto BloqueTipoContenido_VTHERmenteCentrado_Visible

Xin lỗi vì đã sử dụng tiếng Tây Ban Nha trên các tên lớp (đó là vì tôi nói tiếng Tây Ban Nha và điều này rất khó để nếu tôi sử dụng tiếng Anh, tôi sẽ bị lạc).

Mã đầy đủ:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="en" />
<meta name="language" content="en" />
<title>Vertical Centering in CSS2 - Example (IE, FF & Chrome tested) - This is so tricky!!!</title>
<style type="text/css">
 html,body{
  margin:0px;
  padding:0px;
  width:100%;
  height:100%;
 }
 div.BloqueTipoTabla{
  display:table;margin:0px;border:0px;padding:0px;width:100%;height:100%;
 }
 div.BloqueTipoFila_AltoAjustadoAlContenido{
  display:table-row;margin:0px;border:0px;padding:0px;width:100%;height:auto;
 }
 div.BloqueTipoFila_AltoRestante{
  display:table-row;margin:0px;border:0px;padding:0px;width:100%;height:100%;
 }
 div.BloqueTipoCelda_AjustadoAlContenido{
  display:table-cell;margin:0px;border:0px;padding:0px;width:auto;height:auto;
 }
 div.BloqueTipoCelda_RestanteAncho{
  display:table-cell;margin:0px;border:0px;padding:0px;width:100%;height:auto;
 }
 div.BloqueTipoCelda_RestanteAlto{
  display:table-cell;margin:0px;border:0px;padding:0px;width:auto;height:100%;
 }
 div.BloqueTipoCelda_RestanteAnchoAlto{
  display:table-cell;margin:0px;border:0px;padding:0px;width:100%;height:100%;
 }
 div.BloqueTipoContenedor{
  display:block;margin:0px;border:0px;padding:0px;width:100%;height:100%;position:relative;
 }
 div.BloqueTipoContenedor_VerticalmenteCentrado{
  display:block;margin:0px;border:0px;padding:0px;width:100%;height:auto;position:relative;top:50%;
 }
 div.BloqueTipoContenido_VerticalmenteCentrado_Oculto{
  display:block;margin:0px;border:0px;padding:0px;width:100%;height:auto;visibility:hidden;position:relative;top:50%;
 }
 div.BloqueTipoContenido_VerticalmenteCentrado_Visible{
  display:block;margin:0px;border:0px;padding:0px;width:100%;height:auto;visibility:visible;position:absolute;top:-50%;
 }
</style>
</head>
<body>
<h1>Vertical Centering in CSS2 - Example<br />(IE, FF & Chrome tested)<br />This is so tricky!!!</h1>
<div class="BloqueTipoTabla" style="margin:0px 0px 0px 25px;width:75%;height:66%;border:1px solid blue;">
 <div class="BloqueTipoFila_AltoAjustadoAlContenido">
  <div class="BloqueTipoCelda_AjustadoAlContenido">
   [1,1]
  </div>
  <div class="BloqueTipoCelda_AjustadoAlContenido">
   [1,2]
  </div>
  <div class="BloqueTipoCelda_RestanteAncho">
   [1,3]
  </div>
  <div class="BloqueTipoCelda_AjustadoAlContenido">
   [1,4]
  </div>
 </div>
 <div class="BloqueTipoFila_AltoAjustadoAlContenido">
  <div class="BloqueTipoCelda_AjustadoAlContenido">
   [2,1]
  </div>
  <div class="BloqueTipoCelda_AjustadoAlContenido">
   [2,2]
  </div>
  <div class="BloqueTipoCelda_RestanteAncho">
   [2,3]
  </div>
  <div class="BloqueTipoCelda_AjustadoAlContenido">
   [2,4]
  </div>
</div>
 <div class="BloqueTipoFila_AltoRestante">
  <div class="BloqueTipoCelda_RestanteAlto">
   <div class="BloqueTipoContenedor" style="border:1px solid lime;">
    <div class="BloqueTipoContenedor_VerticalmenteCentrado" style="border:1px dotted red;">
     <div class="BloqueTipoContenido_VerticalmenteCentrado_Oculto">
     The cell [3,1]
     <br />
     *&nbsp;*&nbsp;*&nbsp;*
     <br />
     *&nbsp;*&nbsp;*&nbsp;*
     <br />
     *&nbsp;*&nbsp;*&nbsp;*
     <br />
     Now&nbsp;is&nbsp;the&nbsp;highest&nbsp;one
     </div>
     <div class="BloqueTipoContenido_VerticalmenteCentrado_Visible" style="border:1px dotted blue;">
     The cell [3,1]
     <br />
     *&nbsp;*&nbsp;*&nbsp;*
     <br />
     *&nbsp;*&nbsp;*&nbsp;*
     <br />
     *&nbsp;*&nbsp;*&nbsp;*
     <br />
     Now&nbsp;is&nbsp;the&nbsp;highest&nbsp;one
     </div>
    </div>
   </div>
  </div>
  <div class="BloqueTipoCelda_RestanteAlto">
   <div class="BloqueTipoContenedor" style="border:1px solid lime;">
    <div class="BloqueTipoContenedor_VerticalmenteCentrado" style="border:1px dotted red;">
     <div class="BloqueTipoContenido_VerticalmenteCentrado_Oculto">
      This&nbsp;is<br />cell&nbsp;[3,2]
     </div>
     <div class="BloqueTipoContenido_VerticalmenteCentrado_Visible" style="border:1px dotted blue;">
      This&nbsp;is<br />cell&nbsp;[3,2]
     </div>
    </div>
   </div>
  </div>
  <div class="BloqueTipoCelda_RestanteAnchoAlto">
   <div class="BloqueTipoContenedor" style="border:1px solid lime;">
    <div class="BloqueTipoContenedor_VerticalmenteCentrado" style="border:1px dotted red;">
     <div class="BloqueTipoContenido_VerticalmenteCentrado_Oculto">
      This is cell [3,3]
      <br/>
      It is duplicated on source to make the trick to know its variable height
      <br />
      First copy is hidden and second copy is visible
      <br/>
      Other cells of this row are not correctly aligned only on IE!!!
     </div>
     <div class="BloqueTipoContenido_VerticalmenteCentrado_Visible" style="border:1px dotted blue;">
      This is cell [3,3]
      <br/>
      It is duplicated on source to make the trick to know its variable height
      <br />
      First copy is hidden and second copy is visible
      <br/>
      Other cells of this row are not correctly aligned only on IE!!!
     </div>
    </div>
   </div>
  </div>
  <div class="BloqueTipoCelda_RestanteAlto">
   <div class="BloqueTipoContenedor" style="border:1px solid lime;">
    <div class="BloqueTipoContenedor_VerticalmenteCentrado" style="border:1px dotted red;">
     <div class="BloqueTipoContenido_VerticalmenteCentrado_Oculto">
      This&nbsp;other is<br />the cell&nbsp;[3,4]
     </div>
     <div class="BloqueTipoContenido_VerticalmenteCentrado_Visible" style="border:1px dotted blue;">
      This&nbsp;other is<br />the cell&nbsp;[3,4]
     </div>
    </div>
   </div>
  </div>
 </div>
 <div class="BloqueTipoFila_AltoAjustadoAlContenido">
  <div class="BloqueTipoCelda_AjustadoAlContenido">
   [4,1]
  </div>
  <div class="BloqueTipoCelda_AjustadoAlContenido">
   [4,2]
  </div>
  <div class="BloqueTipoCelda_RestanteAncho">
   [4,3]
  </div>
  <div class="BloqueTipoCelda_AjustadoAlContenido">
   [4,4]
  </div>
 </div>
</div>
</body>
</html>

-1

Ít đến bữa tiệc, nhưng bạn cũng có thể làm điều này:

<div style="height: 500px; width: 500px;">

<div class="bottom" style="height: 250px; width: 500px; background: red; margin-top: 250px;"></div>

<div class="top" style="height: 250px; width: 500px; background: blue; margin-top: -500px;"></div>


-2

Hoặc đặt một vị trí tuyệt đối cho phần tử và xử lý các lề bằng cách khai báo chúng từ cạnh của trang chứ không phải là cạnh của đối tượng. Sử dụng% vì nó phù hợp hơn với các kích thước màn hình khác. Đây là cách tôi khắc phục vấn đề ... Cảm ơn, hy vọng đó là những gì bạn đang tìm kiếm ...


-3

Đối với giải pháp Chỉ dành cho CSS 1. Phải cố định chiều cao của trình bao bọc hoặc 2. chiều cao của div thứ hai


Điều này không có gì để thực sự trả lời câu hỏi đang được hỏi. Không có gì hơn là một bình luận gợi ý về một giải pháp có thể.
cimmanon

-3
.move-wrap {
    display: table;
    table-layout: fixed; // prevent some responsive bugs
    width: 100%; // set a width if u like
    /* TODO: js-fallback IE7 if u like ms */
}

.move-down {
    display: table-footer-group;
}

.move-up {
    display: table-header-group;
}

2
Giải pháp này đã được đăng 3 năm trước bạn: stackoverflow.com/a/12069537/1652962
cimmanon

-4

Thật dễ dàng với css, chỉ cần sử dụng display:blockz-indextài sản

Đây là một ví dụ:

HTML:

<body>
    <div class="wrapper">

        <div class="header">
            header
        </div>

        <div class="content">
            content
        </div>
    </div>
</body>

CSS:

.wrapper
{
    [...]
}

.header
{
    [...]
    z-index:9001;
    display:block;
    [...]
}

.content
{
    [...]
    z-index:9000;
    [...]
}

Edit: Nó là tốt để thiết lập một số background-colorđến div-sđể xem mọi thứ đúng cách.


-4

Tôi có một cách đơn giản để làm điều này.

<!--  HTML  -->

<div class="wrapper">

    <div class="sm-hide">This content hides when at your layouts chosen breaking point.</div>

    <div>Content that stays in place</div>

    <div class="sm-show">This content is set to show at your layouts chosen breaking point.</div>

</div>

<!--  CSS  -->

    .sm-hide {display:block;}
    .sm-show {display:none;}

@media (max-width:598px) {
    .sm-hide {display:none;}
    .sm-show {display:block;}
}

Giải pháp của bạn có thể giải quyết tốt vấn đề - nhưng bạn có thể vui lòng giải thích tại sao / làm thế nào không. Có rất nhiều người mới tham gia vào S / O và họ có thể học được một điều từ chuyên môn của bạn. Điều gì có thể là một giải pháp rõ ràng cho bạn có thể không phải là như vậy với họ.
Taryn Đông

Các khối mã tự chúng thường không phải là câu trả lời hữu ích và có nhiều khả năng thu hút downvote. Vui lòng giải thích những gì giải pháp bạn đang hiển thị và tại sao / làm thế nào mã đó trả lời câu hỏi.
j_s_stack
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.