Two grids in a grid but different height? How? - css

Can I ask you for help with this https://play.tailwindcss.com/fIuk5aXhz0?
What I have now:
What I need here is to have the red div height lower, just after HELLO 2 of the green box, like this:
<link href="https://unpkg.com/tailwindcss#^2/dist/tailwind.min.css" rel="stylesheet"/>
<div class="grid grid-cols-4 gap-6">
<div class="grid gap-4 bg-red-500">
<span>HELLO 1</span>
<span>HELLO 2</span>
</div>
<div class="grid gap-4 col-span-3 bg-green-500">
<span>HELLO 1</span>
<span>HELLO 2</span>
<span>HELLO 3</span>
<span>HELLO 4</span>
<span>HELLO 5</span>
<span>HELLO 6</span>
</div>
</div>

I think you can use auto-rows-min and wrap these two of HELLO in a div in this case.
example

I understood it like this. Left column should not be affected by the height of the right column, right? If so, then I would have implemented it that way.
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/tailwindcss/2.2.19/tailwind.min.css' media='all' />
<div class="bg-gray-400 min-h-screen flex items-center justify-center ">
<div class="grid grid-cols-2 gap-2 w-1/2">
<div class="row-span-2 rounded ">
<div class="bg-white p-10 rounded bg-green-100 mb-2">Block A</div>
<div class="bg-white p-10 rounded bg-green-100 ">Block B</div>
</div>
<div class="row-span-2 bg-white p-10 rounded">lorem lorem lroem lorem lorem lroem lorem lorem lroemlorem lorem lroemlorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem lorem lorem lroem
lorem lorem lroem lorem lorem lroem lorem lorem lroem
</div>
</div>
</div>

Related

How center items in Tailwind css

How to center the content or items on small sizes in Tailwind. I did all the alignment classes that are available in Tailwind It's not working. it's Tailwind V3
<div class="bg-white pb-8">
<div class="p-4 pb-0 bg-third-bg sm:max-w-7xl mx-auto">
<div class="sm:flex sm:max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 sm:items-center sm:justify-between bg-white p-6">
<div class="sm:flex sm:flex-col sm:items-center sm:justify-center sm:space-y-4 md:w-4/12">
<div class="sm:flex">
<img src="https://educlever.beplusthemes.com/university/wp-content/uploads/2018/11/forma4.png" alt="" />
</div>
<div class="sm:flex text-xl font-bold">Lorem ipsum dolor sit</div>
<div class="sm:flex sm:text-center">Lorem ipsum dolor sit amet, conse ct amet, conse adipiscing elit dolor sit a amet, conse adipisci</div>
</div>
<div class="sm:flex sm:flex-col sm:items-center sm:justify-center sm:space-y-4 md:w-4/12">
<div class="sm:flex">
<img src="https://educlever.beplusthemes.com/university/wp-content/uploads/2018/11/forma3.png" alt="" />
</div>
<div class="sm:flex text-xl font-bold">Lorem ipsum dolor sit</div>
<div class="sm:flex sm:text-center">Lorem ipsum dolor sit amet, conse ct amet, conse adipiscing elit dolor sit a amet, conse adipisci</div>
</div>
<div class="sm:flex sm:flex-col sm:items-center sm:justify-center sm:space-y-4 md:w-4/12">
<div class="sm:flex">
<img src="https://educlever.beplusthemes.com/university/wp-content/uploads/2018/11/forma2.png" alt="" />
</div>
<div class="sm:flex text-xl font-bold">Lorem ipsum dolor sit</div>
<div class="sm:flex sm:text-center">Lorem ipsum dolor sit amet, conse ct amet, conse adipiscing elit dolor sit a amet, conse adipisci</div>
</div>
</div>
</div>
</div>
https://play.tailwindcss.com/dBKsusYFvi?size=540x720
This is typically done with Tailwind's flex or grid.
Since it looks like you're working with flex already, I've included that example first.
1. Flex
If you intend to use Tailwind's flex, wrapping your items in a container that has flex and justify-center is all you need. Keep in mind these classes need to be on the direct parent element of the items you want centered.
<div class="flex justify-center">
<div>centered item</div>
</div>
The below example would apply the styles to screens at or above whatever size is assigned to sm in your Tailwind theme, or 480px for the default - the equivalent of #media (min-width: 480px).
<div class="sm:flex sm:justify-center">
<div>centered item</div>
</div>
Here's a snippet you can run to illustrate:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body>
<div class="flex bg-slate-100 p-8 justify-center">
<div class='text-2xl'>centered item</div>
</div>
</body>
</html>
2. Grid
With grid, you just need a parent with grid and justify-items-center.
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body>
<div class="grid grid-cols-1 justify-items-center bg-slate-100 p-8">
<div class='text-2xl'>centered item</div>
</div>
</body>
</html>
I'd be sure to check out the docs as well, they're quite helpful with plenty of examples.
I found out that I have to use grid justify-items to solve that issue
<div class="bg-white pb-8">
<div class="p-4 pb-0 bg-third-bg sm:max-w-7xl mx-auto">
<div class="sm:flex sm:max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 sm:items-center sm:justify-between bg-white p-6">
<div class="grid justify-items-center text-center">
<img class="w-32" src="https://educlever.beplusthemes.com/university/wp-content/uploads/2018/11/forma4.png" alt="" />
<div class="text-xl font-bold">Lorem ipsum dolor sit</div>
<div class="">Lorem ipsum dolor sit amet, conse ct amet, conse adipiscing elit dolor sit a amet, conse adipisci</div>
</div>
<div class="grid justify-items-center">
<img class="w-32" src="https://educlever.beplusthemes.com/university/wp-content/uploads/2018/11/forma3.png" alt="" />
<div class="sm:flex text-xl font-bold">Lorem ipsum dolor sit</div>
<div class="sm:flex sm:text-center">Lorem ipsum dolor sit amet, conse ct amet, conse adipiscing elit dolor sit a amet, conse adipisci</div>
</div>
<div class="grid justify-items-center">
<img class="w-32" src="https://educlever.beplusthemes.com/university/wp-content/uploads/2018/11/forma2.png" alt="" />
<div class="sm:flex text-xl font-bold">Lorem ipsum dolor sit</div>
<div class="sm:flex sm:text-center">Lorem ipsum dolor sit amet, conse ct amet, conse adipiscing elit dolor sit a amet, conse adipisci</div>
</div>
</div>
</div>
</div>

Issue facing in Css grid in wordpress

I hope all are doing well, I am working on WordPress I have written an HTML markup for grid where at single row 2 images are need to show but the they are vertical showing each row a single image I want grid
<div class="our-specialties Container">
<h3 class="primary-text"> Pizzas </h3>
<div class="container-grid">
<?php
$args = array(
'post_type' => 'specialties',
'post_per_page' => 10,
'orderby' => 'title',
'order' => 'ASC',
'category_name'=> 'pizza'
) ;
$pizzas = new WP_Query($args);
while($pizzas->have_posts()): $pizzas->the_post(); ?>
<div class="columns2-4">
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail('specialties'); ?>
<h4><?php the_title(); ?><span><?php the_field('price');?></span> </h4>
<?php the_content(); ?>
</a>
</div>
<?php endwhile; wp_reset_postdata(); ?>
</div>
<h3 class="primary-text"> Others </h3>
<div class="container-grid">
<?php
$args = array(
'post_type' => 'specialties',
'post_per_page' => 10,
'orderby' => 'title',
'order' => 'ASC',
'category_name'=> 'other'
) ;
$pizzas = new WP_Query($args);
while($pizzas->have_posts()): $pizzas->the_post(); ?>
<div class="columns2-4">
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail('specialties'); ?>
<h4><?php the_title(); ?><span><?php the_field('price');?></span> </h4>
<?php the_content(); ?>
</a>
</div>
<?php endwhile; wp_reset_postdata(); ?>
</div>
</div>
code for the style sheet
#media only screen and (min-width:768px){
.container-grid{
margin-left: -10px;
margin-right: -10px;
}
.container-grid::after{
content:'';
display: block;
clear: both;
}
[class*='columns']{
padding: 0 10px;
float: left;
}
.columns2-4{
width: 50%;
}
}
here the images are show single at each row means a vertical one by one images are there, let me know where i am making mistake code looks perfect, the above css codes with classes in html is described, any trick so to solve css
i am creating a menus section, i am following an author but he has different result for the same code i have different
add box-sizing: border-box; to your column like this :
.container-grid {
margin-left: -10px;
margin-right: -10px;
}
.container-grid::after {
content: '';
display: block;
clear: both;
}
[class*='columns'] {
padding: 0 10px;
float: left;
box-sizing: border-box;
}
.columns2-4 {
width: 50%;
}
img {
max-width: 100%;
}
<div class="our-specialties Container">
<h3 class="primary-text"> Pizzas </h3>
<div class="container-grid">
<div class="columns2-4">
<a href="#">
<img src="http://lorempixel.com/200/200/" />
<h4>title<span>20 $</span> </h4>
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
</a>
</div>
<div class="columns2-4">
<a href="#">
<img src="http://lorempixel.com/200/200/" />
<h4>title<span>20 $</span> </h4>
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
</a>
</div>
<div class="columns2-4">
<a href="#">
<img src="http://lorempixel.com/200/200/" />
<h4>title<span>20 $</span> </h4>
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
</a>
</div>
<div class="columns2-4">
<a href="#">
<img src="http://lorempixel.com/200/200/" />
<h4>title<span>20 $</span> </h4>
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
</a>
</div>
</div>
</div>

Bootstrap center all columns in whole row

I'm currently creating a web page with Bootstrap and I'm using columns. My page looks like that:
I'd like to center the last column (in the second row) but the page is dynamic and I don't know how many containers there are.
I found this two solutions on Google:
1) Add this to my css:
.col-centered{
float: none;
margin: 0 auto;
}
2) Add this to the class tag attribute
col-lg-offset-4
But both solutions look like this:
That is not what i want. I want it to look like this:
How can i achieve this?
Bootstrap's columns are floating by default with css float property. With float we can't middle align columns. However with display: inline-block we can. All we need is to remove float from styles of columns and change them to inline-block with vertical-align: middle and you will get what you want. But don't forget to remove extra space that comes with inline-block.
Here is the trick.
.wrapper {
background: green;
padding: 20px 0;
}
.box {
border-radius: 10px;
margin-bottom: 30px;
background: #fff;
padding: 10px;
color: #000;
}
.center-align {
letter-spacing: -4px;
text-align: center;
font-size: 0;
}
.center-align [class*='col-'] {
display: inline-block;
vertical-align: top;
letter-spacing: 0;
font-size: 14px;
float: none;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<div class="wrapper">
<div class="container center-align">
<div class="row">
<div class="col-xs-4">
<div class="box">
<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>
</div>
</div>
<div class="col-xs-4">
<div class="box">
<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>
</div>
</div>
<div class="col-xs-4">
<div class="box">
<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>
</div>
</div>
<div class="col-xs-4">
<div class="box">
<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
</div>
<div class="container center-align">
<div class="row">
<div class="col-xs-4">
<div class="box">
<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>
</div>
</div>
<div class="col-xs-4">
<div class="box">
<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>
</div>
</div>
<div class="col-xs-4">
<div class="box">
<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>
</div>
</div>
<div class="col-xs-4">
<div class="box">
<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>
</div>
</div>
<div class="col-xs-4">
<div class="box">
<p>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
</div>
</div>
Note: Setting font-size: 0; letter-spacing: -4px on parent and applying parent's font-size: 14px; letter-spacing: 0 back on child elements will remove white space that comes with inline-block.
Bootstrap has built-in functionality to achieve the layout you are after, without the introduction of additional CSS rules. Simply use the .col-md-offset-* class:
Move columns to the right using .col-md-offset-* classes. These classes increase the left margin of a column by * columns. For example, .col-md-offset-4 moves .col-md-4 over four columns.
Your layout would end up looking similar to this:
.show-grid {
margin-bottom: 15px;
}
.your-custom-div {
height: 50px;
background-color: green;
color: white;
text-align: center;
}
<!DOCTYPE html>
<html lang="en">
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<div class="row show-grid">
<div class="col-md-4">
<div class="your-custom-div">
.col-md-4
</div>
</div>
<div class="col-md-4">
<div class="your-custom-div">
.col-md-4
</div>
</div>
<div class="col-md-4">
<div class="your-custom-div">
.col-md-4
</div>
</div>
<div class="clearfix visible-md"></div>
</div>
<div class="row show-grid">
<div class="col-md-4 col-md-offset-4">
<div class="your-custom-div">
.col-md-4 .col-md-offset-4
</div>
</div>
<div class="clearfix visible-md"></div>
</div>
</div>
</body>
</html>
EDIT #1: For your requirement of not knowing how many columns you will be fetching from your database for the second row, another option would be to use a conditional during the output of the HTML to also output a .col-md-offset-4 class if the modulo of the number of items in your collection divided by the number of columns is equal to 1, or proceed as usual otherwise. In ASP.NET with Razor, this would look something like this (the example below is kept simple on purpose to demonstrate the proposed logic, it can be refactored to it's own HTML helper class, accounting for other column sizes as well):
#{
bool lastItemShouldBeCentered = Foo.Count % 3 == 1;
for (int i = 0; i < Foo.Count; i++)
{
bool isLastItem = i == Foo.Count - 1;
if (isLastItem && lastItemShouldBeCentered)
{
<div class="col-md-4 col-md-offset-4">
// Foo[i] content here
</div>
}
else
{
<div class="col-md-4">
// Foo[i] content here
</div>
}
}
}
EDIT #2: Looks like I misread your requirement. For 1 left-over column, this solution will suffice. For more, I would go with #Muhammad's answer.
You need to add the last block of text into a different row and change the "col-md-4" to "col-md-12".
<div class="row">
<div class="col-md-4"> // column 1
bla bla bla
</div>
<div class="col-md-4"> //column 2
bla bla bla
</div>
<div class="col-md-4"> // column 3
bla bla bla
</div>
</div>
<div class="row">
<center>
<div class="col-md-12"> //last column, also note I changed it to 12
bla bla bla
</div>
</center>
</div>

Strip full screen in fixed twitter bootstrap layout

I would like to create this layout with twitter bootstrap.
http://i.stack.imgur.com/f6mn7.png
This my start Fiddle
http://jsfiddle.net/antoc/n8ec9j2h/
My html
<div class="container-fluid">
<div class="container">
<div class="row">
<div class="col-md-4">
<h3 class="bg-blue">title</h3>
<p>Lorem ipsum</p>
</div>
<div class="col-md-8">
<h3 class="bg-red">title</h3>
<p>Lorem ipsum</p>
<h3 class="bg-green">title</h3>
<p>Lorem ipsum</p>
</div>
</div>
</div>
My problems are:
how to create the blu, red and green strip in css?
how to create the yellow background in css?
Add some margin/padding hackery into it... like this updated fiddle
Here's the relevent CSS:
.bg-yellow{
background:yellow;
margin:-10px 0 -9999px -9999px;
padding:10px 0 9999px 9999px;
}
.bg-blue {
margin-left:-1000px;
padding-left:1000px;
}
.bg-green, .bg-red{
margin-right:-1000px;
}
And the HTML
<div class="container">
<div class="row">
<div class="col-md-4">
<h3 class="bg-blue">title</h3>
<div class="bg-yellow">
<p>Lorem ipsum</p>
</div>
</div>
<div class="col-md-8">
<h3 class="bg-red">title</h3>
<p>Lorem ipsum</p>
<h3 class="bg-green">title</h3>
<p>Lorem ipsum</p>
</div>
</div>
</div>
Other than some padding editing for the yellow box and some text content, I think this is what you wanted:
http://jsfiddle.net/AndrewL32/n8ec9j2h/17/
<div class="row">
<div class="col-md-3 bg-yellow">
<h3 class="bg-blue">title</h3>
<p>Lorem ipsumLorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsumLorem ipsumLorem ipsum Lorem ipsumLorem ipsum</p>
<p>Lorem ipsumLorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsumLorem ipsumLorem ipsum Lorem ipsumLorem ipsum</p>
</div>
<div class="col-md-9">
<h3 class="bg-red">title</h3>
<p>Lorem ipsum</p>
<h3 class="bg-green">title</h3>
<p>Lorem ipsum</p>
</div>
</div>

Is there a way in Bootstrap to "split" a column on small screens?

I'm using Bootstrap 3.
On large screens I want to have a sidebar on the left and the maincontent on the right. On small screens I want to have important blocks of the sidebar on top, then the maincontent, then the less important blocks of the sidebar. Is there a way to achieve that?
Here's a JS Bin showing the problem: http://jsbin.com/wibucopi/1/ and below is the current code (which, however, displays all sidebar content on top on small screens).
<div class="container-fluid">
<div class="row">
<div class="col-sm-3">
<div class="upper" style="background:red">
<h3>I want to be <b>above</b> the main content on small screens!</h3>
</div>
<div class="lower" style="background:green">
<h3>I want to be <b>below</b> the main content on small screens!</h3>
</div>
</div>
<div class="col-sm-9">
<h1>Main content</h1>
<p>Lorem ipsum dolor sit amet</p>
</div>
</div>
</div>
I've already played around with col-sm-pull/push-x, but I could only achieve that the whole sidebar is displayed below the maincontent on small screens.
I don't want to duplicate content and show / hide it with visible-XY, hidden-XY, as the page would get bigger and it feels just wrong.
It would be great to have a pure Bootstrap css solution, or at least a css only one (I wouldn't like to use js).
You could do something like this:
Bootply Demo
HTML:
<div class="container-fluid">
<div class="row">
<div class="upper col-sm-3" style="background:red">
<h3>I want to be <b>above</b> the main content on small screens!</h3>
</div>
<div class="col-sm-9 col-sm-pull-right">
<h1>Main content</h1>
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
</div>
<div class="lower col-sm-3" style="background:green">
<h3>I want to be <b>below</b> the main content on small screens!</h3>
</div>
</div>
</div>
CSS:
#media (min-width: 768px) {
.col-sm-pull-right {
float: right;
}
}
.lower {
clear: left;
}

Resources