html - 带有 Angular 组件的 Flexbox 布局

标签 html css angular flexbox

我目前在我的 Angular 元素中有一个简单的页眉、主体、页脚结构,我想将主要组件变成一个 flex-box,以便以相等的宽度水平排列所有给定的组件。此外,当屏幕宽度低于 700px 时,我想更改 flex-direction 到列。 由于我已经使用纯 HTML + CSS 实现了这一点(请参阅 jsfiddle:http://jsfiddle.net/aJPw7/443/),我感觉这与 Angular 父组件有关。

预期行为:两个 <app-content-section>每个元素占 <app-main-component> 宽度的 50%和 100% 高度。当我将 flex-direction 更改为 column 时,它们应该有 100% 的宽度和 50% 的高度:

当前行为: <app-content-section>当我使用“justify-content”但不受任何高度或宽度属性影响时,元素对齐。

样式.css

html, body {
    height: 100%;
    width: 100%;
    padding: 0;
    margin: 0;
}

应用根 HTML:

<app-main-component>
    <app-content-section></app-content-section>
    <app-content-section></app-content-section>
</app-main-component>

应用程序主要组件 HTML:

<div class="main-component"> 
    <ng-content></ng-content>
</div>

应用程序主要组件 CSS:

.main-component {
    display: flex;
    flex-direction: row;
    height: 100%;
}

@media screen and (max-width: 700px) {
    .main-component {
        flex-direction: column;
    }
}

应用内容部分 HTML:

<div class="content-section">
    <a>Test</a>
</div>

应用内容部分 CSS:

.content-section {
    width: 100%;
    height: 100%;
}

Edit1:我也试过 :host{ }但仍然没有运气。

Edit2: 我创建了另一个 jsfiddle,通过设置主机元素的样式并添加 flex: 1 实现了正确的宽度,但元素仍然不会使用整个高度。 https://jsfiddle.net/1c15q243/19/

最佳答案

所以正确的答案是添加一个 :host{ flex: 1; }在“app-content-section CSS”中以提供其托管组件 <app-content-section>正确的 flex-sizing。

我在第二次编辑时发现了这一点,但@karthikaruna 指出我忘记在 stylig 文件中添加 HTML- 标签。

关于html - 带有 Angular 组件的 Flexbox 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49191700/

相关文章:

javascript - 使用 jQuery 设置选择选项的 HTML 数据属性

css - 在 Firefox 和 IE 中,-webkit-print-color-adjust 的替代项是什么

javascript - Angular 6 - 实现复杂模板的最佳方式

excel - Angular 4上传excel(xls,xlsx)并明智地转换json记录

html - 单击 anchor 链接时固定标题下的内容

html - 我的 CSS 代码似乎继承了第一个选项

css - Laravel 5 - 电子邮件中的内联 CSS

angular - 在 angular7 中实现引导模式对话框

php - 在php中将日期转换为sql格式并将其存储到数据库

html - 将一个 div 的价格放在另一个 div 之上