Arranging CSS floating elements of varying heights into a layout with 2 columns

I am facing an issue with managing white spaces: I have a variety of elements set to float:left that need to be arranged in 2 columns, each with different heights.

https://i.sstatic.net/MTYfI.jpg

To simplify the process, I specifically need element 3 from the image to come right after element 1 while maintaining the padding.

I am utilizing Plain CSS and AngularJS without any additional JS modules, as these elements are frequently loaded. It is crucial for me to avoid using jQuery at all costs.

Important update:

The approach of using float:left or float:right based on child even or odd is not feasible: Float multiple fixed-width / varible-height boxes into 2 columns

Important update:

There are instances where I only need to align 2 elements, one below the other. Therefore, I am interested in applying a specific property to element 1.

Answer №1

To achieve a column layout using CSS flex, you can utilize the flex layout with a direction set to column. For a detailed explanation, check out the guide provided by CSSTricks at https://css-tricks.com/snippets/css/a-guide-to-flexbox/.

Alternatively, you can implement a masonry-style layout using the column CSS property:

#container {
    width: 100%;
    max-width: 700px;
    margin: 2em auto;
}
.cols {
    -moz-column-count:3;
    -moz-column-gap: 3%;
    -moz-column-width: 30%;
    -webkit-column-count:3;
    -webkit-column-gap: 3%;
    -webkit-column-width: 30%;
    column-count: 3;
    column-gap: 3%;
    column-width: 30%;
}
.box {
    margin-bottom: 20px;
}
.box.one {
    height: 200px;
    background-color: #d77575;
}
.box.two {
    height: 300px;
    background-color: #dcbc4c;
}
.box.three {
    background-color: #a3ca3b;
    height: 400px;
}
.box.four {
    background-color: #3daee3;
    height: 500px;
}
.box.five {
    background-color: #bb8ed8;
    height: 600px;
}
.box.six {
    background-color: #baafb1;
    height: 200px;
}
<div id="container" class="cols">
    <div class="box one"></div>
    <div class="box two"></div>
    <div class="box one"></div>
    <div class="box three"></div>
    <div class="box two"></div>
    <div class="box five"></div>
    <div class="box one"></div>
    <div class="box two"></div>
    <div class="box six"></div>
    <div class="box three"></div>
    <div class="box two"></div>
</div>

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

To include a Material Icon in your React-Toastify notification

This is an example of code located in a specific folder. While trying to incorporate a material Icon, an error has been encountered. 'React' must be in scope when using JSX import { toast } from 'react-toastify'; import ErrorIcon from ...

Getting a box-shadow programmatically in Opera can be achieved by using the appropriate CSS

Trying to achieve the same effect with jQuery: item.css("-o-box-shadow") or: item.css("box-shadow") However, the result is an empty string. In Webkit and Gecko browsers it works by using "-webkit" and "-moz" prefixes respectively. How can this be ach ...

Error message "Module not found in Vue" occurs when changing image URL to an online image

I am currently working on a dynamic image display feature where I retrieve image names as strings from a backend. To manage a large number of images, I plan to store them online while maintaining the same logic for displaying them. Previously, I achieved t ...

Add numerical identifiers to numerous camera entities

I am working on a three js scene that includes a 3D model, and I would like to incorporate multiple cameras into the model. In order to distinguish between each of the cameras in the scene, I am looking for a way to label them with numbers, possibly near ...

I am having trouble with my jQuery datatable Ajax call - instead of reaching the server, I am seeing an alert indicating

Looking for help with my web page. I have a table that needs to be populated using AJAX calls to the server-side method. I've implemented jQuery DataTables, and here's the code snippet: $(document).ready(function() { $("#tableUserList").DataTa ...

Using Redux saga: passing arguments to axios instance

I need to transition my code from thunk to saga to meet the requirements of my company. While it was easy to send api requests with params using thunk, I am struggling to figure out how to pass params to the axios request: redux/sagas/handlers/marketpla ...

When JavaScript evaluates special characters in HTML, it interrupts the function call within an AJAX response

Recently, I have been developing a custom form completion feature for a website/tool that I am working on. After successfully implementing the search functionality, which displays results below the input field, I wanted to enable users to select a result ...

What could be causing my ajax request to not connect to my .NET WebMethod?

Can someone please assist me with figuring out why this code is not functioning properly? I would greatly appreciate a second pair of eyes to take a look - Thanks in advance! This function seems to be successful, but the C# method is not being triggered. ...

Issues with THREE.js loading materials onto objects

Previously, I used mtl+obj files in an iOS app to load a 3D PCB chip into a scene. However, when trying to load it using three.js (r80), the object loads fine and the geometry appears correct, but none of the textures, colors, or images load onto the obje ...

removing the mapStateToProps function will result in an undefined value

I am new to React and I'm in the process of converting a class component to functional components using hooks. I need some guidance on safely removing 'mapStateToProps' without encountering undefined errors. I have two pages, A.js and B.js. ...

Issue with Bootstrap container's max-width not functioning

After implementing the code in the following manner: <link href="css/bootstrap.css" rel="stylesheet" type="text/css"> <link href="css/bootstrap-responsive.css" rel="stylesheet" type="text/css"> <style type="text/css"> .con ...

Is there a way to bypass the default layout on app router in Next.js and implement our own custom page layout

Utilizing a default layout in layout.jsx, I passed all my other pages as children through props. In the page router, we typically configure the router path to specify which layout to use. However, in this new system, I am facing challenges with coding it. ...

Responsive and neatly arranged navigation links using Bootstrap 4

Currently undergoing the process of transitioning from Bootstrap 3.3 to 4.1, I find myself faced with two final complications. In Bootstrap 3.3, I had a responsive navbar without branding, where the links were evenly spaced. While I have managed to get my ...

toggle section visibility depending on the width of the screen

Currently working on a responsive website and looking for ways to hide/show sections based on screen width. I am not a fan of using media queries because I want the browser to only load necessary sections. For example, I have a large gallery with many pict ...

Is the Await keyword failing to properly pause execution until the promise has been fulfilled?

I'm currently working on manipulating a variable within an async function, and I've noticed that the variable is being returned before the completion of the data.map function below. Even though I have the await keyword in place to pause the code ...

I am seeking to transform an elongated image into a two-dimensional circle using WebGL. This process will involve intentional distortion of the image

Trying to figure out how to take a high-resolution image and wrap it into a circle has been a challenge. It's like bending a steel bar until it forms a perfect circle with both ends touching. I've been grappling with threejs for the past 8 hours ...

Allow checkboxes to function similar to radio buttons within individual rows of a table

I am facing an issue with a table that has multiple rows, each containing one column with three checkboxes. The requirement is for the user to select only one out of the three options in each row. I attempted to solve this using JQuery, but ran into the pr ...

Tips for concealing overlay when the cursor hovers

Can anyone help me with a code issue I'm having? I want to hide an overlay after mouse hover, but currently it remains active until I remove the mouse from the image. Here is the code: .upper {position: absolute; top: 50%; bottom: 0; left: 50%; tra ...

Accordion is having trouble expanding fully

My accordion is causing some trouble. When I try to open one section, both sections end up opening. I want it to toggle, so that only one section opens at a time based on my click. Switching the display from flex to column fixes the issue, but I don' ...

The initial website design only occupies half of the webpage with HTML

My code is only filling up half the screen, specifically the left half but not the right. I attempted to set the html height and width to 100%, but unfortunately, it did not resolve the issue. Additionally, after this adjustment, I encountered problems wit ...