zoukankan      html  css  js  c++  java
  • 4-6 组件嵌套和投影组件(2)

    把这个去掉

    接下来要把这个组件做完

    这个容器组件,理想状态下是它


    控制这里显示几行几列

    div是一个容器


    支持滚动。

    设置为网格,现在不设置网格的属性。那些东西我们放在属性里面。比如我们可以做一个input属性,让它可以设置。

    grid-gap是每一个区块的间隔。

    如果多出来了。那么按照行的方式去增长。比如多出来的就会折行显示。在下一行显示。

    y轴不允许滚动。横轴上允许滚动。

    再加ngStyle,我们要设置它的行的模板和列的模板。行的模板一会在ts的类当中定义。




    类似的会有一个列的模板。



    完整的样子。把行和类在组件中定义

    ts内,首先需要几个属性
    它是一行有多少列。,默认一行有8列。

    屏幕当中可现实的列数

    地下有个指示器要不断的滑动,那个不系统提供的,是我们自己做的。通过压紧一个区块的margin来实现。所以这里我们定义silderMargin默认值设置为0.

    get计算属性。这样一个计算属性,在外界看来就像是一个属性一样。

    get快捷键

    自动生成代码 自己写属性名就可以了

    这里面用一个css的函数叫做minmax,就是最小值和最大值的一个区间。最小值自动,最大是内容的。

    方法的快捷键。
    函数
    templateColumns这用css的repeat函数。

    参数1是多少列。参数2是每列的宽度。宽度用css提供的calc()方法进行计算。100vm就是屏幕的可见宽度。

    减去可视的列数乘以0.4。 这个0.4是中间的间隔。

    最后要有rem

    再除以列数。

    这里加个括号,先减,再除以

    还差了一层括号

    处理滚动,有可能会大于它可视的范围。所以需要处理一些它的滚动

    ts建好方法

    在模板里面我们需要一个区域。


    这个区域什么时候出现呢?滚动的时候才出现这个区域。

    地下的小红条,来回的移动。通过ngStyle来做。

    通过的是不断挤压它的margin

    让它的sliderMargin等于一个值。

    上下的marign是0,左右的margin是一个百分比。

    乘以100以后,后面要加上百分比

    一共是8列,但是显示的是5列。所有它可以左右的滚动。滚动的时候底下有个小的指示器。

    投影组件有它的特点,它和传统组件的区分就在于,它的定制化的自由度比较大。但是这不意味着投影组件就比一般的组件要好。它对组件的控制力要弱。
    因为你把里面的内容下发给了开发者自己去控制。这样缺少一个规范和约束。

    虽然可以做约束,但是约束还是相当弱。
    传统组件的好处,只暴露给你该暴露的一些属性和方法。然后直接调用就可以了。而且写法非常简单,从开发者角度。拿到这个组件直接放到这里就ok了

    但是投影组件写起来要麻烦一些。因为每个里面的东西都要自己去定义这样一些东西,格式。如果在风格相对统一的界面里面。会发现这么写来写去非常的啰嗦。没有传统组件那样自己接放的模式,直接用就ok了。所以每一种组件都有好处,都有自己的适用场景,根据场合和场景选择用不同的组件。

    投影型组件一般适合做容器的时候,比如在这里的grid容器。

    如果把这个组件放在咱们自己真正的模板当中的时候,会发现有的时候会有一些事件的重复传递 。放在grid里面的话,你就会发现事件要从grid再传出来。

    冗余的事件,通过ngContent可以把它直接放在根组件当中去暴露,这样就节省了事件的冲突的传递。

     

    结束

  • 相关阅读:
    Android开发学习笔记-SharedPreferences的用法
    Android开发学习笔记-自定义组合控件
    webpack 4 教程
    react 生命周期图解
    git 操作说明
    echars 3.0 去掉柱状图阴影用什么属性
    react——Table组件
    antd ——按钮
    react——Table组件列中靠左 靠右对齐解决方案
    react中异步的使用
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/13562791.html
Copyright © 2011-2022 走看看