精华内容
下载资源
问答
  • 网格布局是WisP组件的一种常见布局。在表单布局出现以前,我们通常...容器类的组件目前只有 .assy(自定义组件)和.stickerassy(带有标题栏的自定义组件),如下图:图片.png2)一个组件可以在不同的屏幕宽度下定义不...

    网格布局是WisP组件的一种常见布局。在表单布局出现以前,我们通常使用网格布局在一个自定义的组件内放置其他组件。如图:

    图片.png

    它对应的配置如下图:

    图片.png

    设定组件的布局前,首先需要了解以下的知识点:

    1)只有容器类的组件才能进行布局。容器类的组件目前只有 .assy(自定义组件)和.stickerassy(带有标题栏的自定义组件),如下图:

    图片.png

    2)一个组件可以在不同的屏幕宽度下定义不同的布局。如上图,定义了一个默认的,高分辨率和低分辨率的。

    当然,这样必然会增加配置的工作量,但是,对于超大型的屏幕而言,可放置更多的组件以便利用空间。但也请勿滥用。一般的情况下,我们并不需要在一个组件内部配置很多种布局。

    我们在上图中可以看到 兼容设备最小宽度,兼容设备最大宽度,就是用来支持不同种类的屏幕的配置。

    在布局的基本属性中,我们可以设置他的背景CSS, Designer提供了一组选项。上图选择的是Deep Relief

    下级组件容器CSS主要用于容器内布置的组件的边框,阴影等效果。

    对于网格布局而言,重要的是网格的样式。

    网格布局是一个给定列数,行数根据组件摆放来进行计算的布局方式。组件的摆放顺序是,从左到右,从上到下。

    如果,设定了横向展开则表示如果该容器在无法完全显示横向内容时,将出现横向的滚动条。

    如果,设定了纵向展开则表示如果该容器在无法完全显示纵向内容时,将出现纵向的滚动条。

    设定各列等宽是指网格布局忽略内部组件的大小,而让每一列都具有相同的宽度。

    图片.png

    如上图,三列等宽

    其他参数的设置见下图:

    图片.png

    网格布局中需要对每个组件进行配置:

    图片.png

    上图的是网格布局需要配置的参数

    首先是选择组件,也可以给这个组件给定一个容器CSS类。如果不设置,这个组件的容器将使用布局上的统一设置。上下文命名,用于容器组件访问该自组件(这个以后我们会在有关上下文的部分讨论)。

    对于这个子组件,可设定对齐方式:

    填充,靠左,靠右或者居中。这里的对齐方式是指该组件在格子内部的位置。纵向也是类似的。

    横向跨越单位,纵向跨越单位,是指这个组件在横向和纵向占有几个格子。

    横向纵向填充是指布局完成后,容器如果还有剩余空间,那么这个格子是否去抢占剩余的空间。

    我们也可以直接给定组件的宽度和高度。

    这个布局其实就是SWT GridLayout的配置化。

    相比后面提到的表单式布局来说,网格布局有一些优缺点:

    1)网格布局只能控制横向等宽,无法完美控制纵向等宽。但是,表单布局可以。如果要适配非标的屏幕,表单布局更加合适。

    2)网格布局可以设定一个纵向扩展,然后给组件定高定宽。这种方式特别适合于大量组件的布局方式。通过纵向滚动来显示。

    展开全文
  • (正在尝试用table去写,先提个问题看看有没有好用的Vue组件)效果就是:条记录对应一个Card一行最多只有3个Card添加一条记录,就添加一个Card,一行超过3个时,自动换行到下一行底部有页导航,一页设定比如说...

    想实现类似 MadeWithVuejs 网站主页类似的效果的网格布局,使用 table 中的 row 和 column 属性能不能实现这样的效果呢?(正在尝试用table去写,先提个问题看看有没有好用的Vue组件)

    效果就是:

    每条记录对应一个Card

    每一行最多只有3个Card

    添加一条记录,就添加一个Card,每一行超过3个时,自动换行到下一行

    底部有页导航,每一页设定比如说最多显示4行

    具体的效果可以参看: MadeWithVuejs 的主页

    或者你有没有自己比较好的实现思路,希望能把思路讲的详细些。

    2017-11-16 更新

    使用 @tony_gong 提供的方式 flex 布局,很好的实现了上面的所说的效果,代码如下:

    .grid {

    display: flex;

    flex-flow: wrap;

    justify-content: space-between;

    }

    .item {

    flex: 0 0 30%;

    margin: 16px;

    }

    效果如下:

    可以看到最后一行只有 两个Card 的时候,space-between 会造成中间一个大大的空白,想要把最后一个卡片放在空白的位置,应该怎样设置 style 呢?

    更新更新

    .grid {

    display: flex;

    flex-flow: wrap;

    /* 下面这一行不要了 */

    /* justify-content: space-between; */

    }

    .item {

    flex: 0 0 30%;

    /* margin 改成下面这样就可以了 */

    margin-top: 24px;

    margin-left: calc((100% - 3 * 30%) / 4);

    }

    展开全文
  • 常用属性:排列对齐:①设置组件的排列方式: android:orientation="" vertical(竖直,默认)或者horizontal(水平)②设置组件的对齐方式: android:layout_gravity="" center,left,right,buttom啊,这些,如果想同时用两种的...

    常用属性:

    排列对齐:

    ①设置组件的排列方式:  android:orientation=""     vertical(竖直,默认)或者horizontal(水平)

    ②设置组件的对齐方式:  android:layout_gravity=""  center,left,right,buttom啊,这些,如果想同时用两种的话:eg: buttom|left

    设置布局为几行几列:

    ①设置有多少行:android:rowCount="4"       //设置网格布局有4行

    ②设置有多少列:android:columnCount="4"    //设置网格布局有4列

    设置某个组件位于几行几列

    注:都是从0开始算的哦!

    ①组件在第几行:android:layout_row = "1"   //设置组件位于第二行

    ②组件在第几列:android:layout_column = "2"   //设置该组件位于第三列

    设置某个组件横跨几行几列:

    ①横跨几行:android:layout_rowSpan = "2"    //纵向横跨2行

    ②横跨几列:android:layout_columnSpan = "3"     //横向横跨2列

    使用实例:

    最最最普遍的例子----计算器界面:

    效果图:

    PS:这里要说一点,网格布局和其他布局不同,可以不为组件设置Layout_width和Layout_height属性

    因为组件的宽高由几行几列决定了,当然,你也可以写个wrap_content

    代码:

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/GridLayout1"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:rowCount="6"

    android:columnCount="4"

    android:orientation="horizontal">

    android:layout_columnSpan="4"

    android:text="0"

    android:textSize="50sp"

    android:layout_marginLeft="5dp"

    android:layout_marginRight="5dp"

    />

    android:text="回退"

    android:layout_columnSpan="2"

    android:layout_gravity="fill"

    />

    android:text="清空"

    android:layout_columnSpan="2"

    android:layout_gravity="fill"

    />

    android:text="+"

    />

    android:text="1"

    />

    android:text="2"

    />

    android:text="3"

    />

    android:text="-"

    />

    android:text="4"

    />

    android:text="5"

    />

    android:text="6"

    />

    android:text="*"

    />

    android:text="7"

    />

    android:text="8"

    />

    android:text="9"

    />

    android:text="/"

    />

    android:layout_width="wrap_content"

    android:text="."

    />

    android:text="0"

    />

    android:text="="

    />

    代码解释:

    代码很简单,就是清除和回退按钮设置了跨两列而已,其他的都是直接添加的

    每个组件默认是占一行,占一列

    这里要说明一点:

    通过android:layout_rowSpan和android:layout_columnSpan设置表明组件横越的行数与列数

    再通过:android:layout_gravity = "fill"  设置表明组件填满所横越的整行或者整列

    用法总结:

    ①GridLayout使用虚细线将布局划分为行,列和单元格,同时也支持在行,列上进行交错排列

    ②使用流程:

    step 1:先定义组件的对其方式 android:orientation  水平或者竖直

    step 2:设置组件所在的行或者列,记得是从0开始算的

    step 3:设置组件横跨几行或者几列;设置完毕后,需要在设置一个填充:android:layout_gravity = "fill"

    另外:这些属性也常用到:

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:verticalSpacing="35px"

    android:horizontalSpacing="5px" 

    android:numColumns="auto_fit"

    android:columnWidth="100px"

    android:stretchMode="columnWidth"

    android:gravity="center"  />

    展开全文
  • 这篇文章中,我们将要学习在一个网页中使用CSS网格布局放置元素的7种方法。前一段时间,SitePoint网站发表了《CSS格网布局介绍》这篇文章。最近,我也写了篇文章叫作《详解CSS格网布局工作草案》这篇文章中,使用CCS...

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

    这篇文章中,我们将要学习在一个网页中使用CSS网格布局放置元素的7种方法。

    前一段时间,SitePoint网站发表了《CSS格网布局介绍》这篇文章。最近,我也写了篇文章叫作《详解CSS格网布局工作草案》

    这篇文章中,使用CCS格网布局网页元素的具体方法将完全成为其重点。现在,让我们浏览其中的每一种方法。

    解决浏览器对格网布局的支持

    之前,格网布局还没有固定的浏览器支持。但在2017年3月之后,最新版本的谷歌和火狐浏览器则默认支持CSS格网布局。IE仍然只支持旧的版本,Opera需要启动“实验网络平台”选项,Safari目前还不支持。为了实现这篇文章中的所有例子,我建议读者使用谷歌或者火狐浏览器。为了照顾由于某些原因不能使用上述两种浏览器的的读者,我会在文章中加入每种方法最终结果的截图。

    #1根据单个属性指定所有元素

    这是我们之前文章中用于布置元素的版本,这种方法比较繁琐但是容易理解。基本上,使用grid-column-start/grid-column-end 和 grid-row-start/grid-row-end 属性指定一个元素的左/右和上/下边界。如果一个元素仅跨越一行或者一列,你可以省略-end 属性,这种方法需要写的CSS代码少一点。在上面的示例中,将元素A放置在第二行第二列的CSS代码如下:

    通过如下代码也可以达到同样的效果:

    #2使用grid-row和grid-column

    尽管第一个例子中的CSS代码可读性强且容易理解,但我们要使用4个不同的属性来放置一个元素。除了使用4个属性,我们可以只使用2个— grid-column 和grid-row。这些属性将由右斜杠分为2个值,第1个值决定了元素的起始线,第2个值决定了终点线。

    下面是使用这些属性的具体语法:

    将对象C放置在格网的右下角,应该使用下面的CSS语句:

    #3使用grid-area

    技术上讲,我们布置的对象覆盖网页上一个特定的区域,其边界取决于提供给格网线的具体数据。然而,所有这些数据都可以由 grid-area 属性一次提供。下面是使用该属性的CSS语法:

    如果你在记忆这些数字顺序上有困难,那么你仅需要记住元素左上角( row-start – col-start )和右下角( row-end – col-end )的具体位置即可。与之前的例子类似,将对象C放置在格网的右下角,可以采用下面的CSS代码:

    #4使用关键字span

    在布置元素时除了指定终线,还可以使用关键字span设定一个特定元素跨越的行数或者列数。

    下面是使用span关键字的正确语法:

    如果你的元素只跨越1个行或者列,你可以省略关键字span和其数值。

    这次我们把对象C放置在格网的左上角,下面的CSS代码可以实现这样的功能:

    #5使用命名的线

    目前,我们使用具体数字来指定格网线,这种方式在简单布局中使用很方便。但是,如果放置多个元素就会让人有点混乱。大多数情况下,网页中的一个元素会落入特定的范围。例如,上图Header元素的范围从列线c1到c2,从行线r1到r2。如果将某个元素范围由命名的线来确定,而不是具体数字,这样会给开发者带来极大便利。

    这里我们创建一个非常基本的布局,方便读者更加清晰地理解上面的概念。首先,我们需要修改应用于格网容器的CSS代码:

    在上述代码中,需要基于每个元素的类型为包围它的所有线分配名字。这里的想法是,通过使用名字让大家深刻理解不同元素的放置方法。在这个特别的例子中,header元素跨越了所有列。因此,将“head-col-start”和“head-col-end”两个名字分配给第一列和最后一列,这样很明显就能看出这两列分别代表header元素的最左侧和最后侧。所有其它线都可以用类似的规则命名。当所有线都被命名后,就可以用以下CSS代码放置所有元素:

    尽管对比平常,上述方式需要编写更多CSS代码,但是它可以让我们清楚每一个元素的具体位置。

    #6使用通用名命名的线和关键字span

    在上面的方法中,所有线都有不同名字,用来标记一个元素的起始、中间和终点。例如,“content-col-start”和“content-col-mid”代表网页内容章节的起始和中间点。如果内容章节占据了再多一些行,就需要使用其它线,如“content-col-mid-one”、“content-col-mid-two”等等。

    若出现如下的情况:如果仅有类似“content”的通用名,可供内容章节的所有格网线使用,就可以使用关键字“span” 再来细化一个元素具体跨越几条线。同时,还可以为线名加上具体数字,来设定一个元素跨越的行数或者列数。

    和上一种方法一样,这里的方法也要求修正grid容器的CSS代码:

    每个命名的列线都有同样的名字代表其像素宽,每个命名的行线则代表了网页中具体章节覆盖的行。在这个例子中,我提出了在sidebar之下的advertisement章节,下面是具体CSS代码:

    #7使用命名的格网区域

    除了使用命名线,还可以通过将名字分配到不同区域来放置元素。一样的,我们还需要对grid容器的的CSS代码做一些改动。

    除了使用命名线,还可以通过将名字分配到不同区域来放置元素。一样的,我们还需要对grid容器的的CSS代码做一些改动。

    具体的CSS代码如下:

    用单独的点(.)或者一系列点可以创建一个不包含任何内容的空单元。所有的字符串都需要占据同样的列数,所以我们用一系列点来代替空字符。目前,命名的格网区域必须是矩形,但是未来的版本应该会有所改变。下面就是所有元素CSS代码:

    一旦你定义了所有格网区域,将它们分配给不同的元素就很简单了。但一定要记住,分配这些名字给不同区域时一定不能使用特殊字符,这样会让上述声明非法。

    总结

    我们介绍了使用CSS格网布局布置元素的7种方法,关于这篇文章你有什么观点要和其他读者分享么?你会选择哪种方法在你的工程中?请在下面的留言中告诉我。

    英文原文:https://www.sitepoint.com/seven-ways-you-can-place-elements-using-css-grid-layout/

    译者:zfzf1236

    展开全文
  • 网格包布局管理是最复杂和灵活的布局管理,在下面会作...网格包布局理解为网格单元布局更合理,因为一个容器被划分为若干个网格单元,而每个组件放置一个或多个网格单元中。要注意的是,网格包布局指定一个容...
  • 导读网格布局是由CSS3引入的种新的布局方式,提供了强大的布局能力。我们先来看一下W3C对于它的描述。This CSS module defines a two-dimensional grid-based layout system, optimized for user in...
  • 頔言頔语:进步,一定要进步,进步是跟收入持平的本钱。总有人问:前端开发中是哪些轮子值得实现一遍。但是你造过那些轮子呢?这是我造过的!... 需求分析网格布局就是把一个div分成N部分,每个部分...
  • Android综合试题、单选题:1、Android(安卓)是Google开发的基于(B)平台的、开源的、智能手机操作系统。A、WindowsB、LinuxC、IPhoneOSD、Symbian2、以下哪种操作系统不属于智能手机操作系统? AA、Windowsx XPB、...
  • 此条显然很重要,但是我经常发现一些设计师会跳过这步直接使用 Photoshop CS6 而不...01. 从顶层框架草图入手 草绘基本的框架将帮助你解决 UX 问题,并组织布局结构如果我要做一个项目的外观和感觉,第一件事就是先...
  • 在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小。如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器...本节介绍 Swing 提供的 6 种布局类型,所有布局都实现 Layout...
  • 布局管理器概述在讨论每个Swing组件(例如文本域和单选按钮)之前,首先介绍一下如何把这些组件安排在一个框架内。与Visual Basic不同,JDK没有表单设计器,需要通过编写代码来定制(布局)用户界面组件所在的位置。当然...
  • 布局管理器是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小;布局管理器之间的继承关系 :在上面的UML图... 线性布局作用作用 : 线性布局会将容器中的组件一个一个排列起来, L...
  • 、引言Android的界面是有布局组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。在Android4.0之前,我们通常说Android开发五大布局...
  • 最近,谷歌提出了种基于强化学习的芯片布局方法。机器之心报道,机器之心编辑部。与已有方法不同,该方法能够基于之前的经验进行学习,并随着时间不断改进。具体而言,在大量芯片 block 上执行训练时,该方法能够...
  • 网格布局管理器是Android4.0提出的,使用GridLayout表示,在网格布局管理器中,屏幕被虚拟的细线划分成行,列和单元格,每个单元格放置一个组件,并且这个组件也可以跨行或跨列摆放 网格布局管理器和表格布局管理器的区别:...
  • 选项窗格JTabbedPane JTabbedPane在Swing中实现选项窗格,它可以把多个组件放在多个选项卡中,从而使页面...选项窗格内部可以放置多个选项页,每个选项页可以容纳一个JPanel作为子组件,我们只要设计好需要添加
  • 创新实践项目前端开发方案的选择 ...首先可以使用BootStrap的网格系统实现网页的布局,然后再将每个部分所用到的网页元素和组件放置在相对应的单元内。网页所需组件推荐优先选用BootStrap提供的组件,对于不
  • 软件界面设计工具_3款合集

    千次下载 热门讨论 2010-06-29 03:52:47
     这种交互图的特点是简单明了,能够表示出各种控件的基本属性(如文本、位置和选中状态等),但它只是一个静态的图片,不真实表现出每个控件的响应动作,如仅看这张图,是不清楚点击代理服务器设置分组框上的...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

网格布局每个网格都能放置一个组件