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/

相关文章:

html - Twitter bootstrap 中心表格列内容垂直和水平

angular - 如何对 Angular @Input 的 setter 和 getter 进行单元测试

javascript - Svg 背景之间的水平线

javascript - 每个评论如何获得自己的框? (html、node.js)

javascript - 如何在 HTML 和 js 中将随机整数放入表格中

css - 内联元素 CSS

html - CSS break-word 在 Div 中不起作用

html - 背景附件: fixed in ie10 causing image to jump

具有延迟加载模块的 Angular 路由器面包屑

javascript - 当滚动太快时,白屏出现棱 Angular