Jump to content
  • 0

css хитромудрые селекторы


crashtua
 Share

Question

Есть верстка:


<body>
<header>Заголовок сайта</header>
<div class="layout">
<aside>
<div class="top"></div>
<div class="middle">
<h2 class="nomargin-top">Меню</h2> <—- вот он, элемент для которого надо получить селектор
<ul class="nomargin-bottom"> <—- и для последнего тоже надо
<li><a href="link1.html">Ссылка 1</a></li>
<li><a href="link2.html">Ссылка 2</a></li>
<li><a href="link3.html">Ссылка 3</a></li>
<li><a href="link4.html">Ссылка 4</a></li>
</ul>
</div>
<div class="bottom"></div>
</aside>
<article>
<h1 class="nomargin-top">Название страницы</h1>
<p class="nomargin-bottom">Бла-бла.</p>
</article>
</div>
<footer>Подвал</footer>
</body>

Как будет выгладить селектор первого элемента второго div в aside, и последнего элемента в том же divе?

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Да там можно 20 вариантов написать этого селектора, вплоть с передподвывертом через nth-child...но тут вопрос скорее в другом..скорей всего человек первый раз с css столкнулся.

Link to comment
Share on other sites

  • 0

Класс указан(просто для просмотра макета), но мне не желательно использовать класс. Нужно использовать теги last-child, nth-child(с этого семейства) вместо h2 и ul, потому что контент тега <div class="middle"> будет создаваться динамически с помощью jsp, и я не очень хочу зависеть от названия классов.

Link to comment
Share on other sites

  • 0

.middle h2:first-child {/* styles */}

.middle ul:last-child {/* styles */}

.middle h2:nth-child(1) {/* styles */}

.middle ul:nth-child(2) {/* styles */}

.middle h2:nth-of-type(1) {/* styles */}

.middle ul:nth-of-type(1) {/* styles */}

по желанию можно добавить спереди .layout aside если нужно уточнить

Edited by Svatov
Link to comment
Share on other sites

  • 0

Да там можно 20 вариантов написать этого селектора, вплоть с передподвывертом через nth-child...но тут вопрос скорее в другом..скорей всего человек первый раз с css столкнулся.

Да да, впервые :D Первый раз когда делал разметку, то сделал все как хотел, правда таким высером странным кодом, что я сам ужаснулся, вот, кто хочет посмотреть, милости просим


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>float</title>
<style>
.header {
background-color: #FF0004;
height: 150px;
padding-left: 25px;
padding-right: 25px;
}
.header-right {
background-image:url('header-right.png');
background-repeat:no-repeat;
width : 25px;
height : 150px;
float:right;
margin-right: -25px;
}
.header-left {
background-image:url('header-left.png');
background-repeat:no-repeat;
width : 25px;
height : 150px;
float:left;
margin-left: -25px;

}
.header-mid {
background-image:url('header-mid.png');
background-repeat:repeat-x;
height : 150px;
width : 100%;
}
.header-content {
float:left;
width : 100%;
height : 150px;
margin-top : 18px;
margin-bottom : -18px;
}

.menu {
float:left;
background-color: #FF0004;
width: 150px;

}
.menu-top {
background-image:url('menu-top.png');
background-repeat:no-repeat;
width: 150px;
height : 25px;
}
.menu-bottom {
background-image:url('menu-bottom.png');
background-repeat:no-repeat;
width: 150px;
height : 25px;
}
.menu-mid {
background-image:url('menu-mid.png');
background-repeat:repeat-y;
width: 150px;

}
.menu-content {
padding-left : 18px;
width: 150px;
}

.main-content {
background-color: #B85BFF;
padding-left: 150px;
}
.content-corner-top-left {
background-image:url('content-corner-top-left.png');
background-repeat:no-repeat;
width: 25px;
height : 25px;
float:left;
}
.content-corner-top-right {
background-image:url('content-corner-top-right.png');
background-repeat:no-repeat;
width: 25px;
height : 25px;
margin-right:-25px;
float:right;
}
.content-corner-bottom-left {
background-image:url('content-corner-bottom-left.png');
background-repeat:no-repeat;
width: 25px;
height : 25px;
float:left;
}
.content-corner-bottom-right {
background-image:url('content-corner-bottom-right.png');
background-repeat:no-repeat;
width: 25px;
height : 25px;
margin-right:-25px;
float:right;
}
.content-side-left {
background-image:url('content-side-left.png');
background-repeat:repeat-y;
width: 25px;
}
.content-side-right {
background-image:url('content-side-right.png');
background-repeat:repeat-y;
width: 25px;
}
.content-side-top {
background-image:url('content-side-top.png');
background-repeat:repeat-x;
height : 25px;
margin-right:25px;
margin-left:25px;
}
.content-side-bottom {
background-image:url('content-side-bottom.png');
background-repeat:repeat-x;
height : 25px;
margin-right:25px;
margin-left:25px;
}
.content-mid {
background-image:url('content-mid.png');
background-repeat:repeat;
}
</style>
</head>
<body>
<div class="header">
<div class="header-left">
</div>
<div class="header-mid">
<div class="header-content">
Header content goes here
</div>
<div class="header-right">
</div>
</div>

</div>
<div class="menu">
<div class="menu-top">
</div>
<div class="menu-mid">
<div class="menu-content">
Menu 1<br/>
Menu 2<br/>
Menu 3
</div>
</div>
<div class="menu-bottom">
</div>
</div>
<div class="main-content">
<div class="content-corner-top-left">
</div>
<div class="content-side-top">
<div class="content-corner-top-right">
</div>
</div>
<!-- Mid part of content -->
<div class="content-corner-bottom-left">
</div>
<div class="content-side-bottom">
<div class="content-corner-bottom-right">
</div>
</div>

</div>


</body>
</html>

На второй раз хочу сделать покультурнее.

.layout aside

Для применения стиля только для элементов в классе layout и теге aside?

Немного подумав...

Вот надо что то типа .middle first\last-child, но оно не работает :(

Edited by crashtua
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy