...

View Full Version : Problem using multiple classes within selectors



3magdnim
11-08-2012, 06:26 PM
Hey everyone,

I'm trying to learn to create a page that looks like this: (http://i.imgur.com/KD6wL.jpg)

The problem is, I've ended up with this (http://i.imgur.com/7ighv.jpg)

I know it has to do with using multiple classes within selectors. I thought I was doing it right and reviewed the code several times without being able to find the problem. Could someone please review my code and see if they can tell me what I'm doing wrong? Thank you in advance!

HTML


<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, maximum-scale=1.0, minimum-scale=1.0, initial-scale=1.0" />
<title>Sample Site</title>
<link rel="stylesheet" type="text/css" href="css/screen_styles.css" />
<link rel="stylesheet" type="text/css" href="css/screen_layout_large.css" />
<link rel="stylesheet" type="text/css" media="only screen and (min-width:50px) and (max-width:500px)" href="css/screen_layout_small.css" />
<link rel="stylesheet" type="text/css" media="only screen and (min-width:501px) and (max-width:800px)" href="css/screen_layout_medium.css" />
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>

<div class="page">

<header>
<a class="logo" href="#"></a>
</header>

<article>
<h1>Welcome</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. <a href="#">Duis aute irure</a> dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</article>

<div class="promo_container"></div>

<div class="promo one">
<div class="content">
<h3>Promo Heading Here</h3>
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
<p><a class="cta" href="">Visit our blog</a></p>
</div>
</div>

<div class="promo two">
<div class="content">
<h3>Promo Heading Here</h3>
<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit est laborum.</p>
<p><a class="cta" href="">Read the article</a></p>
</div>
</div>

<div class="promo three">
<div class="content">
<h3>Promo Heading Here</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor inci did unt.</p>
<p><a class="cta" href="">Learn more</a></p>
</div>
</div>

<div class="clear-fix"></div>

<nav>
<a href="#">About Us</a>
<a href="#">Services</a>
<a href="#">Portfolio</a>
<a href="#">Contact Us</a>
</nav>

<footer>
&copy; Johnny Design
</footer>


</div>

</body>
</html>


SCREEN_STYLES.CSS


@charset "UTF-8";

/* Global Content Formatting and Styles */

body {
color: #575c7a;
line-height: 1.5em;
font-family: arial;
font-size: 14px;
background: #515673 url(../img/background_gradient.jpg) repeat-x 0px 0px;
}

.page {
max-width: 980px;
margin:0px auto 0px auto;
position: relative;
background-color: #fff;
}

h1 { font-size: 2em; font-weight: normal; color: #a6430a; margin: 0 0 .5em 0; }
h2 { font-size: 1.7em; margin: 0 0 1em 0; }
h3 { font-size: 1.5em; margin: 0 0 1em 0; }
p { margin: 0 0 .75em 0; }
a { color: #de9000; }
a:hover { color: #009eff; }

footer { font-size: .85em; color: #9ba0bd; background-color: #575c7a; padding: 10px 10px 10px 10px; }

a.cta {
text-transform: uppercase;
font-size: .9em;
font-weight: bold;
text-decoration: none;
margin: .5em 0 0 0 ;
padding:0px 12px 0px 0px;
background: url(../img/cta_arrow.png) no-repeat right 0px;
}
a.cta:hover { background-position: right -50px; }

.promo h3 { font-size: 1.1em; margin 0; }
.promo p { line-height: 1.2em; font-size: .9em; margin-bottom: .5em; }

.promo { background-repeat: no-repeat; }
.promo.one { background-image: url(../img/promo_1.jpg); }
.promo.two { background-image: url(../img/promo_2.jpg); }
.promo.three { background-image: url(../img/promo_3.jpg); }

nav a {
color: #f5a06e;
text-transform: uppercase;
text-decoration: none;
display: inline-block;
font-weight: bold;
font-size: .9em;
}

nav a:hover { color: #fff; }

.clear-fix { clear: both; line-height: 1px; }



SCREEN_LAYOUT_LARGE.CSS


@charset "UTF-8";

/* Layout (global rules for all sizes) */

body { margin: 0; padding: 0; }

header a.logo{
display: block;
position: absolute;
background-position: 0px 0px;
background-repeat: no-repeat;
}

nav {
width: 100%;
display: block;
position: absolute;
border-color: #a6430a;
}

/* Layout Large Screens (default for older browsers) */

header {
height: 275px;
background: url(../img/banner_large.jpg) no-repeat right 0px;
}

header a.logo {
width: 150px;
height: 85px;
top: 28px;
right: 30px;
background-image: url(../img/logo_large.png);
}

article { padding: 60px 20px 10px 20px; }

.promo_container { padding: 0px 0px 15px 20px; }

.promo_container .promo {
width: 33%; float: left;
background-position: 0px 3px;
}

.promo_container .promo .content { padding: 0px 30px 0px 70px; }

nav { top: 275px; }
nav a { margin: 12px 0px 10px 20px; }

@media screen and (max-width:990px) {
footer { padding-left: 20px;}
}

harvs899
11-08-2012, 08:35 PM
Try using the <figure> and <figcaption> elements and then floating your promo items to the left

Custard7A
11-08-2012, 10:39 PM
I just bounced over your code quickly, but this probably won't work:




.promo { background-repeat: no-repeat; }
.promo.one { background-image: url(../img/promo_1.jpg); }
.promo.two { background-image: url(../img/promo_2.jpg); }
.promo.three { background-image: url(../img/promo_3.jpg); }


.. should be something like ..




.promo { background-repeat: no-repeat; }
.one { background-image: url(../img/promo_1.jpg); }
.two { background-image: url(../img/promo_2.jpg); }
.three { background-image: url(../img/promo_3.jpg); }


At least, I think it does; I'm guessing at what you're trying to achieve. You are adding multiple classes in your HTML — as separated by spaces — but you don't need to reference the classes you're using together in the CSS.

VIPStephan
11-08-2012, 10:43 PM
You are adding multiple classes in your HTML — as separated by spaces — but you don't need to reference the classes you're using together in the CSS.

Besides that, what the OP wrote is perfectly legal and should work. However, I see this:


<div class="promo_container"></div>
<div class="promo one">



So this: .promo_container .promo {…} will never apply since the promos are not descendants of promo_container.

Custard7A
11-08-2012, 10:51 PM
Besides that, what the OP wrote is perfectly legal and should work.

Huh, so .class.class is actually valid? Learned my something new for the day.

VIPStephan
11-08-2012, 11:12 PM
Yes, if you have, for example:


<div class="message warning"></div>
<div class="message error"></div>
<div class="alert warning"></div>
<div class="alert error"></div>


And you want do style “messages” and “alerts” differently and have different styles for “warnings” and “errors” each you need a way to differentiate:


.message.warning {…style 1…}
.alert.warning {…style 2…}
.message.error {…style 3…}
.alert.error {…style 4…}

… because just “warning” or “error” wouldn’t do it.

3magdnim
11-09-2012, 02:52 PM
Thanks everyone for your replies and thank you VIPStephan for solving my problem...code works great now!

felgall
11-09-2012, 09:14 PM
Huh, so .class.class is actually valid? Learned my something new for the day.

It doesn't work in antiquated versions of Internet Explorer though.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum