Individual Background Images for Individual Divs - html

For a current project of mine, I'm working on a website for a clan of sorts. They've asked me to create a grid of games that they play, and I seem to be struggling with that.
Each individual div considsts of a background-image and a p element for the title of the game. Currently, for every different game, I have to create a new div and a new class in my style sheet, and I only end up changing the left-margin a bit and changing that background image's filepath. It feels like a bit of a waste of time to me.
The code is as follows:
(HTML)
<div id="content" align="center">
<div class="content-box">
<div class="content-box-game-one">
<p>Just Cause 2</p>
</div>
<div class="content-box-game-two">
<p>War Thunder</p>
</div>
<div class="content-box-game-three">
<p>Borderlands 2</p>
</div>
<br />
<div class="content-box-game-four">
<p>Heroes and Generals</p>
</div>
<div class="content-box-game-five">
<p>Grand Theft Auto V</p>
</div>
<div class="content-box-game-six">
<p>Dirty Bomb</p>
</div>
<br />
<div class="content-box-game-seven">
<p>PayDay 2</p>
</div>
<div class="content-box-game-eight">
<p>Team Fortress 2</p>
</div>
<div class="content-box-game-nine">
<p>Coming soon...</p>
</div>
</div>
(CSS)
#content {
margin-top: 3px;
}
.content-box {
width: 1150px;
height: 100%;
}
.content-box-game-one {
border: 3px solid black;
border-radius: 5px;
margin-top: 20px;
width: 300px;
height: 200px;
float: left;
margin-left: 80px;
background-image: url('http://i.imgur.com/ZZtELB6.png');
background-size: 400px;
}
.content-box-game-two {
border: 3px solid black;
border-radius: 5px;
margin-top: 20px;
width: 300px;
height: 200px;
float: left;
margin-left: 20px;
background-image: url('http://war-thunder-hack.marioapps.net/assets/cheatmp/images/background.jpg');
background-size: 400px;
}
.content-box-game-three {
border: 3px solid black;
border-radius: 5px;
margin-top: 20px;
width: 300px;
height: 200px;
float: left;
margin-left: 20px;
background-image: url('http://www.hardcoregamer.com/wp-content/uploads/2012/10/borderlands2.jpg');
background-size: 400px;
}
.content-box-game-four {
border: 3px solid black;
border-radius: 5px;
margin-top: 20px;
width: 300px;
height: 200px;
float: left;
margin-left: 80px;
background-image: url('http://www.gamewallpapers.com/previews_480x300/wallpaper_heroes_and_generals_01.jpg');
background-size: 400px;
}
.content-box-game-five {
border: 3px solid black;
border-radius: 5px;
margin-top: 20px;
width: 300px;
height: 200px;
float: left;
margin-left: 20px;
background-image: url('http://static.guim.co.uk/sys-images/Guardian/Pix/audio/video/2012/11/15/1352984366518/Grand-Theft-Auto-V-005.jpg');
background-size: 400px;
}
.content-box-game-six {
border: 3px solid black;
border-radius: 5px;
margin-top: 20px;
width: 300px;
height: 200px;
float: left;
margin-left: 20px;
background-image: url('https://metrouk2.files.wordpress.com/2012/11/article-1354195970386-16454a86000005dc-11033_636x353.jpg');
background-size: 400px;
}
.content-box-game-seven {
border: 3px solid black;
border-radius: 5px;
margin-top: 20px;
width: 300px;
height: 200px;
float: left;
margin-left: 80px;
background-image: url('http://www.gamechup.com/wp-content/uploads/2013/08/payday-2-featured-1.jpg');
background-size: 400px;
}
.content-box-game-eight {
border: 3px solid black;
border-radius: 5px;
margin-top: 20px;
width: 300px;
height: 200px;
float: left;
margin-left: 20px;
background-image: url('https://upload.wikimedia.org/wikipedia/en/5/59/TF2_Group.jpg');
background-size: 400px;
}
.content-box-game-nine {
border: 3px solid black;
border-radius: 5px;
margin-top: 20px;
width: 300px;
height: 200px;
float: left;
margin-left: 20px;
background-image: url('http://www.exoticindia.com/religious/sfa47.jpg');
background-size: 400px;
}
.content-box p {
margin-top: 80px;
font-family: Lobster;
font-weight: bold;
font-size: 30px;
color: white;
}
Is there anyway I can just create one class on my stylesheet and have it so that the background image will change? Any other ways around this problem?
Thanks!

Since all other properties are same other than background-image you can create one general class like:
.content-box-game {
border: 3px solid black;
border-radius: 5px;
margin-top: 20px;
width: 300px;
height: 200px;
float: left;
margin-left: 80px;
background-size: 400px;
}
Then you only need to specify a background-image property in your other classes.
.content-box-game-one{
background-image: url('http://www.hardcoregamer.com/wp-content/uploads/2012/10/borderlands2.jpg');
}
Add both classes to your div
<div class="content-box-game content-box-game-one">
<p>Borderlands 2</p>
</div>

Related

How to move div to center inside other div using css?

How to move
<div class="rate1"></div>
<div class="info"></div>
<div class="rate2"></div>
to center of div class="bottom" ?
.bottom {
float: left;
width: 100%;
border: 1px solid #ccc;
}
.rate1 {
width: 70px;
height: 70px;
border-radius: 70px;
border: 5px solid #f0f0f0;
float: left;
box-shadow: 1px 1px 1px 0px #e9e9e9;
background: url(http://web.arjentienkamp.com/codepen/tinder/delete.png);
margin-left: 4px;
background-size: 25px;
background-position: center;
background-repeat: no-repeat;
}
.info {
width: 40px;
height: 40px;
float: left;
}
.rate2 {
width: 70px;
height: 70px;
border-radius: 70px;
border: 5px solid #f0f0f0;
float: left;
box-shadow: 1px 1px 1px 0px #e9e9e9;
background: url(http://web.arjentienkamp.com/codepen/tinder/heart.png);
margin-left: 4px;
background-size: 25px;
background-position: center;
background-repeat: no-repeat;
}
<div class="bottom">
<div class="rate1"></div>
<div class="info"></div>
<div class="rate2"></div>
</div>
Use flexbox
.bottom{
width: 100%;
border: 1px solid #ccc;
display: flex;
justify-content: center;
align-items: center;
}
.rate1{
width: 70px;
height: 70px;
border-radius: 70px;
border: 5px solid #f0f0f0;
box-shadow: 1px 1px 1px 0px #e9e9e9;
background: url(http://web.arjentienkamp.com/codepen/tinder/delete.png);
margin-left: 4px;
background-size: 25px;
background-position: center;
background-repeat: no-repeat;
}
.info{
width: 40px;
height: 40px;
}
.rate2{
width: 70px;
height: 70px;
border-radius: 70px;
border: 5px solid #f0f0f0;
box-shadow: 1px 1px 1px 0px #e9e9e9;
background: url(http://web.arjentienkamp.com/codepen/tinder/heart.png);
margin-left: 4px;
background-size: 25px;
background-position: center;
background-repeat: no-repeat;
}
<div class="bottom">
<div class="rate1"></div>
<div class="info"></div>
<div class="rate2"></div>
</div>
You can do this easily with flexbox :
.bottom {
display : flex;
justify-content : center;
}
You should also consider to remove the float : left; in the inner divs.
You can also check the css-tricks's centering guide for other use case.

formatting for "phone" not working

I am currently developing my first chrome extension that uses html/css/javascript. I have a problem, and so far none of the questions in stackoverflow seem to answer my problem.
I have a layout that looks like a phone, just like an IPhone. Basically, my button inside the homepage-bottom ID div is not working properly. I want the homepage-bottom-inside ID div(it's color is black) round.
It currently looks like this.
Please explain my error, and fix the code.
#homepage-bottom-content {
margin-right: auto;
margin-left: auto;
margin-top: 15px;
margin-bottom: 15px;
height: 50px;
padding-top: 10px;
width: 50px;
background-color: black;
border-radius: 100px;
}
#homepage-bottom-content-inside {
height: 25px;
width: 25px;
background-color: black;
border: #E6E6E6 2px solid;
border-radius: 7.5px;
margin-right: auto;
margin-left: auto;
}
<div id="homepage-bottom">
<div id="homepage-bottom-content">
<div id="homepage-bottom-content-inside"></div>
</div>
</div>
EXTRA
This is how the overall "phone" looks.
#homepage {
margin: auto;
height: 620px;
width: 330px;
background-color: lightblue;
border-radius: 40px;
border: black 7px solid;
}
#homepage-content {
margin: auto;
height: 470px;
cursor: cell;
width: 270px;
background-color: white;
border-radius: 7.5px;
border: 3px black solid;
}
#homepage-bottom-content {
margin-right: auto;
margin-left: auto;
margin-top: 15px;
margin-bottom: 15px;
height: 50px;
padding-top: 10px;
width: 50px;
background-color: black;
border-radius: 100px;
}
#homepage-bottom-content-inside {
height: 25px;
width: 25px;
background-color: black;
border: #E6E6E6 2px solid;
border-radius: 7.5px;
margin-right: auto;
margin-left: auto;
}
<div id="homepage">
<div id="homepage-top">
<div id="homepage-top-content">
<div style="background-color: black; height: 15px; width: 15px; margin-right: auto; margin-left: auto; margin-top: 10px; margin-bottom: 10px; border-radius: 100px;"></div>
<div style="background-color: black; height: 10px; width: 50px; margin-right: auto; margin-left: auto; margin-top: 20px; margin-bottom: 15px; border-radius: 20px;"></div>
</div>
</div>
<div id="homepage-content">
</div>
<div id="homepage-bottom">
<div id="homepage-bottom-content">
<div id="homepage-bottom-content-inside"></div>
</div>
</div>
</div>
The padding-top is part of total height, so height:40px + padding-top:10px does it for homepage-bottom-content.
Be aware that the border thickness is also part of the total height.
#homepage-bottom-content {
margin-right: auto;
margin-left: auto;
margin-top: 15px;
margin-bottom: 15px;
height: 40px;
padding-top: 10px;
width: 50px;
background-color: black;
border-radius: 100px;
}
#homepage-bottom-content-inside {
height: 25px;
width: 25px;
background-color: black;
border: #E6E6E6 2px solid;
border-radius: 7.5px;
margin-right: auto;
margin-left: auto;
}
<div id="homepage-bottom">
<div id="homepage-bottom-content">
<div id="homepage-bottom-content-inside"></div>
</div>
</div>
Extra
Your phone fixed:
#homepage {
margin: auto;
height: 620px;
width: 330px;
background-color: lightblue;
border-radius: 40px;
border: black 7px solid;
}
#homepage-content {
margin: auto;
height: 470px;
cursor: cell;
width: 270px;
background-color: white;
border-radius: 7.5px;
border: 3px black solid;
}
#homepage-bottom-content {
margin-right: auto;
margin-left: auto;
margin-top: 15px;
margin-bottom: 15px;
height: 40px;
padding-top: 10px;
width: 50px;
background-color: black;
border-radius: 100px;
}
#homepage-bottom-content-inside {
height: 25px;
width: 25px;
background-color: black;
border: #E6E6E6 2px solid;
border-radius: 7.5px;
margin-right: auto;
margin-left: auto;
}
<div id="homepage">
<div id="homepage-top">
<div id="homepage-top-content">
<div style="background-color: black; height: 15px; width: 15px; margin-right: auto; margin-left: auto; margin-top: 10px; margin-bottom: 10px; border-radius: 100px;"></div>
<div style="background-color: black; height: 10px; width: 50px; margin-right: auto; margin-left: auto; margin-top: 20px; margin-bottom: 15px; border-radius: 20px;"></div>
</div>
</div>
<div id="homepage-content">
</div>
<div id="homepage-bottom">
<div id="homepage-bottom-content">
<div id="homepage-bottom-content-inside"></div>
</div>
</div>
</div>

Making a 4 blocks layout (2 superimposed)

I would like to a 4 blocks layout like this:
I've been trying things with float but I really don't master it.
How can I do that ?
Thanks
My HTML code:
<div id="colonne_gauche">1</div>
<div id="colonne_gauche2">2</div>
<div id="colonne_droite">4</div>
<div id="colonne_centre">3</div>
My CSS code:
#colonne_gauche
{
margin-top: 5px;
-float: left;
width: 420px;
height: 145px;
border: 1px solid #818181;
background: red;
}
#colonne_gauche2
{
float: left;
margin-top: 5px;
width: 420px;
height: 145px;
border: 1px solid #818181;
background: orange;
}
#colonne_centre
{
float: right;
margin-top: 5px;
margin-left: 5px;
margin-right: 5px;
width: 310px;
height: 295px;
border: 1px solid #818181;
background: green;
}
#colonne_droite
{
float: right;
margin-top: 5px;
width: 220px;
height: 295px;
border: 1px solid #818181;
background: blue;
}
I just played a little with the floating and see what that does.
This should help you: DEMO.
HTML:
<div id="header">Header</div>
<div id="stackleft">
<div id="one">1</div>
<div id="two">2</div>
</div>
<div id="stackright">
<div id="three">3</div>
<div id="four">4</div>
</div>
CSS:
#header {
width: 960px;
padding: 50px 0px;
color: black;
border: 1px solid black;
margin: 5px;
text-align: center;
}
#one {
width: 420px;
text-align: center;
padding: 0px;
height: 145px;
color: black;
border: 1px solid black;
margin: 5px;
}
#two {
width: 420px;
text-align: center;
padding: 0px;
height: 145px;
color: black;
border: 1px solid black;
margin: 5px;
}
#three {
width: 310px;
text-align: center;
padding: 0px;
height: 295px;
color: black;
border: 1px solid black;
margin: 5px;
display: inline-block;
}
#four {
width: 220px;
text-align: center;
padding: 0px;
height: 295px;
color: black;
border: 1px solid black;
margin: 5px;
display: inline-block;
}
#stackleft, #stackright {
display: inline-block;
vertical-align: top;
}
http://jsfiddle.net/xam558e3/
Using DIV's inside of other DIV's you can easily control how they appear, and where they appear. You should look up the box model, it may shed some light for you on this.
<div style="width:310px">
<div style="width:303px; height: 100px; background-color: #6495ed;"></div>
<div style="width:100px; height: 100px; background-color: red; float:left; margin: 1px;"></div>
<div style="width:100px; height: 100px; background-color: red; float:left; margin: 1px;"></div>
<div style="width:100px; height: 100px; background-color: red; float:left; margin: 1px;"></div>
<div style="width:303px; height: 100px; background-color: red; float:left; margin: 1px;"></div>
</div>

automatic width of a div inside a div container

I have a design question.
I need to create a progress bar for a video player.
I have a div container (id videoManager) with all the div about the PLAY, the STOP, the progress bar, the VOLUME, other buttons, all one beside the other (floating left).
i would like the div of the progress bar (id playerSlider) resizes depending on the remained space. i wrote down this code, but if use "width: 100%;" for this div, it doesn't get the remained space, but the 100% of the container.
suggestions?
HTML:
<div id="videoManager">
<div id="playpauseCommand">Play</div>
<div id="stopCommand">Stop</div>
<div id="playerSlider">
<div id="objSlider"></div>
</div>
<div id="timeElement">10:12:12</div>
<div id="volumeSlider"></div>
<div id="displayCommand">Command</div>
</div>
CSS:
div#videoManager{
margin-top: 30px;
width: 980px;
height: 44px;
background: transparent url('bg.jpg') center center repeat-x;
position: relative;
color: #fff;
}
div#playpauseCommand, div#stopCommand{
width: 44px;
height: 44px;
float: left;
border-right: 2px solid #555;
}
div#playerSlider{
float:left;
height: 44px;
width: 100%;
padding: 15px 10px 0px 10px;
}
div#objectSlider{
float: left;
clear: left;
width: 100%;
}
div#timeElement{
float: left;
height: 44px;
width: 80px;
border-right: 2px solid #555;
}
div#volumeSlider{
float: left;
height: 44px;
width: 180px;
border-right: 2px solid #555;
}
div#displayCommand{
float: left;
height: 44px;
width: 70px;
border-right: 2px solid #555;
}
and this is a link to my site.
try this css code, not sure if this is exactly what you want though:
div#videoManager{
margin-top: 30px;
width: 980px;
height: 44px;
background: transparent url('bg.jpg') center center repeat-x;
position: relative;
color: #fff;
}
div#playpauseCommand, div#stopCommand{
width: 44px;
height: 44px;
float: left;
border-right: 2px solid #555;
}
div#playerSlider{
float:left;
height: 44px;
width: 53%;
padding: 15px 10px 0px 10px;
position:absolute;
left:178px;
}
div#objectSlider{
float: left;
clear: left;
width: 100%;
}
div#timeElement{
float: left;
height: 44px;
width: 80px;
border-right: 2px solid #555;
}
div#volumeSlider{
float: right;
height: 44px;
width: 180px;
border-right: 2px solid #555;
}
div#displayCommand{
float: right;
height: 34px;
width: 70px;
top:10px;
border-right: 2px solid #555;
position:relative;
}

CSS split bar graph with solid border radius

I'm trying to let a div container with a black background substitute as the border style for a bar graph that has a border radius. Here's the HTML/CSS:
HTML:
<div class="graph-outer">
<div class="inner-left-cap"></div>
<div class="inner-left-bar">40%</div>
<div class="inner-right-bar">60%</div>
<div class="inner-right-cap"></div>
</div>
CSS:
.graph-outer {
background-color: black;
height: 20px;
width: 300px;
border-radius: 10px;
padding: 1px;
}
.inner-left-cap {
background: orange;
width: 2%;
height: 100%;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
float: left;
}
.inner-left-bar {
background: orange;
width: 38%;
height: 100%;
text-align: center;
float: left;
}
.inner-right-cap {
background: red;
width: 2%;
height: 100%;
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
float: left;
}
.inner-right-bar {
background: red;
width: 58%;
height: 100%;
text-align: center;
float: left;
}
http://jsfiddle.net/2ZkDz/115/
The issue in which I am having is that the corners don't look as if they have any black border style whatsoever. What can I do?
Use this version with overflow:hidden and a explicit border on your outer controller and no padding.
.graph-outer {
background-color: black;
height: 20px;
width: 300px;
border:1px solid black;
border-radius: 10px;
overflow:hidden;
}
.inner-left-cap {
background: orange;
width: 2%;
height: 100%;
float: left;
}
.inner-left-bar {
background: orange;
width: 38%;
height: 100%;
text-align: center;
float: left;
}
.inner-right-cap {
background: red;
width: 2%;
height: 100%;
float: left;
}
.inner-right-bar {
background: red;
width: 58%;
height: 100%;
text-align: center;
float: left;
}
​
http://jsfiddle.net/2ZkDz/116/
I've updated your CSS, I changed the caps to 3% each and made the bars smaller. The bar on the inside was going over the caps.
.graph-outer {
background-color: black;
height: 20px;
width: 300px;
border-radius: 10px;
padding: 1px;
}
.inner-left-cap {
background: orange;
width: 3%;
height: 100%;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
float: left;
}
.inner-left-bar {
background: orange;
width: 37%;
height: 100%;
text-align: center;
float: left;
}
.inner-right-cap {
background: red;
width: 3%;
height: 100%;
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
float: left;
}
.inner-right-bar {
background: red;
width: 57%;
height: 100%;
text-align: center;
float: left;
}
​
http://jsfiddle.net/2ZkDz/119/
http://jsfiddle.net/2ZkDz/120/
border-radius: 10px;
padding: 2px;
That should do it! I just threw on a border-radius and bumped up the padding 1. There should be an easier way using the actual border property but im feeling lazy and this does it
a solution without the end-caps (that way the bar width matches the values)
demo jsfiddle
the graph-outer is 20px tall so the nested bars are 18px (20px - 2px (1px top/bottom padding)), set the border-radius on the bars to 9px each (half of the height so each corner is uniform and matches the parents curvature)
.inner-left-bar {
background: orange;
width: 40%;
height: 100%;
text-align: center;
float: left;
border-radius:9px 0 0 9px; /* add this */
}
.inner-right-bar {
background: red;
width: 60%;
height: 100%;
text-align: center;
float: left;
border-radius:0 9px 9px 0; /* and this */
}
/* and drop the end-caps */
​