gpt4 book ai didi

php - CSS-检查并在 li 有 ul 的地方添加右箭头

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:16 24 4
gpt4 key购买 nike

我想在 ul 有一个 ul child 的地方添加 css 右箭头?下面是三 Angular 形右 css。我想在我的菜单中添加,以便用户知道这个菜单有子菜单。

如果 li 有 ul.children 的 child ,如何在纯 css 中检测?

我想在我的 CSS 中添加下方三 Angular 形向右箭头。请帮忙。

菜单的php代码:

<?php
$stmt = $pdo->query('SELECT * FROM `category` where `parent_id` = 0');
$stmt->execute();
?>

<ul class="top-level-menu">
<?php while($menu1 = $stmt->fetch()){ ?>
<li><a href="<?php echo $menu1['category_link'] . "\n"; ?>"><?php echo $menu1['product'] . "\n"; ?></a>

<?php $stmt1 = $pdo->prepare('SELECT * FROM category WHERE parent_id = ?');
$stmt1->execute([$menu1['id']]);
?>
<ul class="second-level-menu">
<?php while($menu2 = $stmt1->fetch()){ ?>
<li><a href="<?php echo $menu2['category_link'] . "\n"; ?>"><?php echo $menu2['product'] . "\n"; ?></a>
<?php
$stmt2 = $pdo->prepare('SELECT * FROM category WHERE parent_id = ?');
$stmt2->execute([$menu2['id']]);
?>
<ul class="third-level-menu">
<?php while($menu3 = $stmt2->fetch()){ ?>
<li><a href="<?php echo $menu3['category_link'] . "\n"; ?>"><?php echo $menu3['product'] . "\n"; ?></a>
</li>
<?php } ?>
</ul>

</li>

<?php } ?>
</ul>


</li>
<?php } ?>
</ul>

菜单栏的CSS

<style>
/* Menu Styles */

.third-level-menu
{
position: absolute;
top: 0;
right: -220px;
width: 220px;
list-style: none;
padding: 0;
margin: 0;
display: none;
}

.third-level-menu > li
{
height: 30px;
background: #999999;
}
.third-level-menu > li:hover { background: #CCCCCC; }

.second-level-menu
{
position: absolute;
top: 30px;
left: 0;
width: 200px;
list-style: none;
padding: 0;
margin: 0;
display: none;
}

.second-level-menu > li
{
position: relative;
height: 30px;
background: #999999;
}
.second-level-menu > li:hover { background: #CCCCCC; }

.top-level-menu
{
list-style: none;
padding: 0;
margin: 0;
}

.top-level-menu > li
{
position: relative;
float: left;
height: 30px;
width: 100px;
background: #999999;
}
.top-level-menu > li:hover { background: #CCCCCC; }

.top-level-menu li:hover > ul
{
/* On hover, display the next level's menu */
display: inline;
}


/* Menu Link Styles */

.top-level-menu a /* Apply to all links inside the multi-level menu */
{
font: bold 14px Arial, Helvetica, sans-serif;
color: #FFFFFF;
text-decoration: none;
padding: 0 0 0 10px;

/* Make the link cover the entire list item-container */
display: block;
line-height: 30px;
}
.top-level-menu a:hover { color: #000000; }
</style>

检查我的菜单,li 有 ul 的地方没有箭头

enter image description here

最佳答案

所以在 CSS 中确实没有父级选择器,但是当你用 jQuery 标记它时,我们可以使用 :has() 选择器来做很多相同的行为。基本上,如果一个 LI el 包含一个 UL,我们应该假设 UL 是一个子菜单,并且我会将“js-has-a-submenu”类添加到我们用于菜单项的 anchor el。我在它前面加上“js-”只是为了反射(reflect)它不是静态应用的类,而是我们将仅通过 js 使用的类。

此处的代码实际上取 self 在评论中引用的菜单示例,但后来我注意到他们将向下箭头硬编码到菜单中,这确实破坏了您想要做的事情,据我了解。所以我删除了向下箭头,并使用 jQuery 来应用该类。要了解菜单本身,请阅读 this ,因为我认为它做得很好(不是粉红色的粉丝,而是它的 CSS)。

$("li:has(ul)").find("a:eq(0)").addClass("js-has-a-submenu");
body {
background: #333;
}

.clearfix:after {
display: block;
clear: both;
}


/*----- Menu Outline -----*/

.menu-wrap {
width: 100%;
box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2);
background: #3e3436;
}

.menu {
width: 1000px;
margin: 0px auto;
}

.menu li {
margin: 0px;
list-style: none;
font-family: 'Ek Mukta';
}

.menu a {
text-decoration:none;
transition: all linear 0.15s;
color: #919191;
}

.menu li:hover > a,
.menu .current-item > a {
text-decoration: none;
color: #be5b70;
}

.menu .arrow {
font-size: 11px;
line-height: 0%;
}


/*----- Top Level -----*/

.menu > ul > li {
float: left;
display: inline-block;
position: relative;
font-size: 19px;
}

.menu > ul > li > a {
padding: 10px 40px;
display: inline-block;
text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.4);
}

.menu > ul > li:hover > a,
.menu > ul > .current-item > a {
background: #2e2728;
}


/*----- Bottom Level -----*/

.menu li:hover .sub-menu {
z-index: 1;
opacity: 1;
}

.sub-menu {
width: 160%;
padding: 5px 0px;
position: absolute;
top: 100%;
left: 0px;
z-index: -1;
opacity: 0;
transition: opacity linear 0.15s;
box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.2);
background: #2e2728;
}

.sub-menu li {
display: block;
font-size: 16px;
}

.sub-menu li a {
padding: 10px 30px;
display: block;
}

.sub-menu li a:hover,
.sub-menu .current-item a {
background: #3e3436;
}

.js-has-a-submenu::after {
content: " \2193";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menu-wrap">
<nav class="menu">
<ul class="clearfix">
<li><a href="#">Home</a></li>
<li>
<a href="#">Movies </a>

<ul class="sub-menu">
<li><a href="#">In Cinemas Now</a></li>
<li><a href="#">Coming Soon</a></li>
<li><a href="#">On DVD/Blu-ray</a></li>
<li><a href="#">Showtimes &amp; Tickets</a></li>
</ul>
</li>
<li><a href="#">T.V. Shows</a></li>
<li><a href="#">Photos</a></li>
<li><a href="#">Site Help</a></li>
</ul>
</nav>
</div>

关于php - CSS-检查并在 li 有 ul 的地方添加右箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48026017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com