- Details
- Written by: Stanko Milosev
- Category: CSS
- Hits: 11107
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="css/index.css" type="text/css">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div class="mainContainer">
<div class="subContainer">
<div class="subSubContainer">
<div class="someText">
some text
</div>
</div>
</div>
</div>
</body>
</html>
and this CSS:
.mainContainer {
border: 1px solid rgb(0, 0, 0);
width: 400px;
height: 400px;
position: relative;
left: 100px;
top: 100px;
}
.subContainer {
border: 1px solid rgb(0, 0, 0);
width: 200px;
height: 200px;
position: absolute;
left: 100px;
top: 100px;
}
.subSubContainer {
border: 1px solid rgb(0, 0, 0);
width: 100px;
height: 100px;
position: absolute;
left: 50px;
top: 50px;
}
.someText {
left: 18px;
top: 38px;
position: absolute;
}
Live example:
Now we will convert just width and height of subContainer in css to percentage, and formula looks like:
width: calc(100 * 200% / 400);
height: calc(100 * 200% / 400);
Where 200% is 200px from subContainer, 400 is 400px from mainContainer and we multiply it with 100 in order to convert calculation to percentage.
The whole css would look something like:
html, body
{
height: 100%;
}
.mainContainer {
border: 1px solid rgb(0, 0, 0);
width: calc(100*400%/1859);
height: calc(100*400%/1089);
position: relative;
left: 100px;
top: 100px;
}
.subContainer {
border: 1px solid rgb(0, 0, 0);
width: calc(100 * 200% / 400);
height: calc(100 * 200% / 400);
left: calc(100 * 100% / 400);
top: calc(100 * 100% / 400);
position: absolute;
}
.subSubContainer {
border: 1px solid rgb(0, 0, 0);
width: calc(100 * 100% / 200);
height: calc(100 * 100% / 200);
position: absolute;
left: calc(100 * 50% / 200);
top: calc(100 * 50% / 200);;
}
.someText {
left: 18px;
top: 38px;
position: absolute;
}
Notice that I added:html, body { height: 100%; } and formula to calculate height looks like:
height: calc(100*400%/1089);
Because height of my view port is 1089.
- Details
- Written by: Stanko Milosev
- Category: CSS
- Hits: 4619
One example on dropping shadow.
HTML:
<!DOCTYPE html> <html> <head> <link type="text/css" rel="stylesheet" href="/index.css"> </head> <body> <div id="myShadow">I am with a shadow</div> <div>I am without a shadow</div> </body> </html>
CSS:
#myShadow {
-webkit-filter: drop-shadow(0px 3px 5px rgba(0,0,0, 1.2));
}
Check the example here.
- Details
- Written by: Stanko Milosev
- Category: CSS
- Hits: 4903
To add three dots at the of too long text can be done with text-overflow: ellipsis.
HTML:
<!DOCTYPE html> <html> <head> <link type="text/css" rel="stylesheet" href="/index.css"> </head> <body> <div id="textEllipsis">The quick brown fox jumps over the lazy dog</div> <body> </html>
CSS:
#textEllipsis {
text-overflow: ellipsis;
width: 200px;
white-space: nowrap;
overflow: hidden;
}
The only problem with this approach is if you need wordwrap then it seems that you will have to use javascript...
- Details
- Written by: Stanko Milosev
- Category: CSS
- Hits: 5120
Example of tables in CSS.
HTML:
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="/index.css"> </head> <body> <div class="tile-grid-row"> <div class="tile-container"> <div class="tile-small"> Tile one </div> </div> <div class="tile-container"> <div class="tile-small"> Tile two </div> </div> </div> <div class="tile-grid-row"> <div class="tile-container"> <div class="tile-small"> Tile three </div> </div> <div class="tile-container"> <div class="tile-small"> Tile four </div> </div> </div> </body> </html>
CSS:
.tile-grid-row {
display: table;
width: 444px;
}
.tile-container {
display: table-cell;
}
.tile-small {
width: 221px;
}
In HTML notice line: <div class="tile-grid-row">, then notice how I defined CSS class:
.tile-grid-row {
display: table;
After that in CSS notice line: display: table-cell;
display: table tells the element to display as a table. Nested elements should be displayed as table-row and table-cell, mimicking the good old TRs and TDs.
Example download from here.
---
Better and simple example of table with borders.
HTML:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="/index.css">
</head>
<body>
<div class="tile-table">
<div class="tile-row">
<div class="tile-cell">
<div class="description-text">
Tile one
</div>
</div>
<div class="tile-cell">
<div class="description-text">
Tile two
</div>
</div>
</div>
<div class="tile-row">
<div class="tile-cell">
<div class="description-text">
Tile three
</div>
</div>
<div class="tile-cell">
<div class="description-text">
Tile four
</div>
</div>
</div>
</div>
</body>
</html>
CSS:
.tile-table {
display: table;
width: 100%;
border-collapse: collapse;
}
.tile-row {
display: table-row;
border: 1px solid #000;
}
.tile-cell {
display: table-cell;
width: 50%;
border: 1px solid #000;
}
.description-text {
position: relative;
top: 1%;
}
Here notice first border-collapse: collapse, and then border in cell and row. Example download from here.