【问题标题】:CSS positioning relatively to parent's parent across angular components跨角度组件相对于父级父级的 CSS 定位
【发布时间】:2018-02-20 07:37:06
【问题描述】:

目前我正在开发一个图片库和图片上传工具。下图中展示了我当前和想要的画廊状态。用户可以单击缩略图并以全尺寸查看当前缩略图行下方的大图片,并相对于组件高度推动下一行。


images.component.html

<div class="container">
  <div class="image-box" *ngFor="let img of images$ | async">
    <img class="mat-elevation-z1" [src]="environment.img + '/images/thmb/' + img.id + '.jpg'" (click)="selected = img">
    <app-image-details *ngIf="selected?.id === img.id" [img]="img"></app-image-details>
  </div>
</div>

images.component.scss

theme-flexfix.scss 在使用 flex 时均等地固定所有图像宽度。 flex-container-wrap-items() 使容器 flex 和 flex-wrap。 .image-box 项目是 flex: 1.

@import 'src/theme-flexfix.scss';

.container {
  @include flex-container-wrap-items(128px);
}

.container > .image-box {
  @include flex-wrap-fix(128px);
  padding: 4px;
  box-sizing: border-box;
  /* position: relative; */
}

img {
  width: 100%;
}

image-details.component.html

<img [src]="environment.img + '/images/' + img.id + '.jpg'">
<p>
  Lorem ipsum
</p>

image-details.component.scss

:host {
  /* position: absolute */
  /* left: 0 */
}

尝试了注释样式以产生我想要的内容,但没有推送其他内容。我认为有一个简单的解决方案,但现在我无法得到它。

感谢您的帮助。

【问题讨论】:

    标签: css angular sass css-position positioning


    【解决方案1】:

    我假设您正在尝试复制 Google 图片搜索。

    我会这样做:

    1. 点击图片时,计算您在一行中显示的图片数量。
    2. 在行中的最后一张图片之后注入带有较大版本图片的 DIV。

    这个想法是始终在当前行结束后注入 DIV。

    这样,您的 DIV 将不会被绝对定位,而是会随着 HTML 流动,并且不需要绝对定位黑客。

    【讨论】:

    • 谢谢,我会看看你的解决方案。是的,它类似于谷歌图像。纯 CSS 版本似乎更节省代码,对我来说可能更优雅。如果我按照您的建议进行操作:预览项目是弹性的,我是否能够在弹性项目之间添加非弹性位置相对项目或添加弹性:0 0 100%?
    • 也让它弯曲,让它水平填充空间。在我看来,该预览框与所有其他图像没有什么不同,它只是更大并且填满了整行。取决于您如何定义清洁度。如果只是将元素添加到 HTML 中语义正确的位置,并且几乎不需要任何额外的 CSS,那对我来说听起来很“干净”。如果你需要绝对定位,在大多数情况下它并不“干净”。
    • 在您的答案中添加一些代码。制作一个堆栈闪电战或其他东西来实际展示您的想法。
    • @zze 如果我要添加代码,它会很多,而且除了 OP 之外的所有人都会感到困惑。我宁愿保留一个算法,我将留给未来的“极客:)”在他们使用的任何框架中实现。
    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多