gpt4 book ai didi

css - Bootstrap 4 带包装元素的卡片组

转载 作者:太空狗 更新时间:2023-10-29 17:57:04 26 4
gpt4 key购买 nike

我正在使用 Angular (v4.3.1) 和 Bootstrap (v4.0.0-alpha.6)。一个模板包含两个子组件,如下所示:

<div class="card-deck">
<comp1></comp1>
<comp2></comp2>
</div>

两个子组件的模板都将 .card Bootstrap 类作为根元素的类。

<div class="card">
...
</div>

一旦编译结果为以下 HTML

<div class="card-deck">
<comp1 _nghost-c3="">
<div _ngcontent-c3="" class="card">
...
</div>
</comp1>
<comp2 _nghost-c4="">
<div _ngcontent-c4="" class="card">
...
</div>
</comp2>
</div>

问题是,如果有一个元素包裹着 .card 元素,则 .card-deck 样式无法正确应用。

仅是 Bootstrap 示例,问题与 Bootstrap css 严格相关,显然与 Angular 无关。

<!DOCTYPE html>
<html>

<head>
<link data-require="bootstrap@4.0.5" data-semver="4.0.5" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" />
<script data-require="bootstrap@4.0.5" data-semver="4.0.5" src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>

<body>
<!-- Displayed properly -->
<div id="deck-without-wrapper" class="card-deck">
<div class="card">
<div class="card-block">
<p>Card1</p>
</div>
</div>
<div class="card">
<div class="card-block">
<p>Card2</p>
</div>
</div>
</div>
<br>

<!-- NOT displayed properly -->
<div id="deck-with-wrapper" class="card-deck">
<div id="wrapper1">
<div class="card">
<div class="card-block">
<p>Card1</p>
</div>
</div>
</div>
<div id="wrapper2">
<div class="card">
<div class="card-block">
<p>Card2</p>
</div>
</div>
</div>
</div>
</body>

</html>

有谁知道让组件结构和样式都起作用的方法吗?

最佳答案

包装器造成了麻烦,因为 div 没有任何 flex css 属性,而 .card类正在使用 flex:1 0 0;

选项 1(首选):应用 .card类到 Angular 宿主元素包装器,而不是第一个子元素
我没有使用 Angular ,通过 these docs 进行您可以在宿主元素上设置一个类。使用 @Component.host .

或者使用 angulars custom renderer 定义一些规则.我无法就最佳方法向您提出建议,我缺乏有关 Angular 知识。

最后你会想得到 <comp1 _nghost-c3="" class="card">

选项 2(不太理智):假装 wrapper 是卡片
并像卡片一样设计它们的样式。
我反对这样做
从长远来看,它可能会造成麻烦。 IE 较新的 Bootstrap 版本可能会更改 css 样式,您可能会忘记更新这些自定义规则。

.card-deck > div {
display: flex;
flex: 1 0 0;
flex-direction:column;

}

.card-deck > div:not(:last-child){
margin-right:15px;
}


.card-deck > div:not(:first-child)
{
margin-left:15px;
}
<!DOCTYPE html>
<html>

<head>
<link data-require="bootstrap@4.0.5" data-semver="4.0.5" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" />
<script data-require="bootstrap@4.0.5" data-semver="4.0.5" src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>

<body>
<!-- Displayed properly -->
<div id="deck-without-wrapper" class="card-deck">
<div class="card">
<div class="card-block">
<p>Card1</p>
</div>
</div>
<div class="card">
<div class="card-block">
<p>Card2</p>
</div>
</div>
</div>
<br>

<!-- NOT displayed properly -->
<div id="deck-with-wrapper" class="card-deck">
<div id="wrapper1">
<div class="card">
<div class="card-block">
<p>Card1</p>
</div>
</div>
</div>
<div id="wrapper2">
<div class="card">
<div class="card-block">
<p>Card2</p>
</div>
</div>
</div>
</div>
</body>

</html>

关于css - Bootstrap 4 带包装元素的卡片组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45368131/

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