- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个 Row
容器,它们都有一个 BoxShadow
。阴影非常大,因此跨越父级之外的空间,所以我在父级上使用 clipBehavior: Clip.none
。
问题在于,对于行中的每个容器,它的阴影都会重叠到前一个容器中。我在下面设置了一些大胆的颜色来强调这个问题。如您所见,前一个 Container 的右侧从下一个 Container 获得阴影。
这是我的代码
return SingleChildScrollView(
clipBehavior: Clip.none,
scrollDirection: Axis.horizontal,
child: Row(
children: [
_ShadowedBox(),
_ShadowedBox(),
_ShadowedBox(),
],
),
);
class _ShadowedBox extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 144,
child: Column(
children: [
SizedBox(
width: 144,
height: 144,
child: Container(
decoration: BoxDecoration(
color: Colors.grey,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(cardRadius),
boxShadow: [
BoxShadow(
offset: const Offset(0.0, 6.0),
blurRadius: 38.0,
spreadRadius: 0.0,
color: Colors.red,
),
BoxShadow(
offset: const Offset(0.0, 6.0),
blurRadius: 46.0,
spreadRadius: 0.0,
color: Colors.green,
),
BoxShadow(
offset: const Offset(0.0, 6.0),
blurRadius: 10.0,
spreadRadius: 0.0,
color: Colors.blue,
),
]
),
child: ClipRRect(
borderRadius: BorderRadius.circular(cardRadius),
child: Image.network("https://via.placeholder.com/400x400.png?text=Coming%20soon", fit: BoxFit.contain)
),
),
],
),
);
}
}
谁能建议如何阻止阴影渗入其他容器,同时仍然能够显示未被父容器剪裁的阴影?
最佳答案
好的,我已经测试了 2 种方法来解决您的问题。作为Wapazz说,你的每个 Container
都是用自己的阴影单独绘制的,所以它们会重叠。
一种解决方案是将阴影效果应用到您的 Row
小部件而不是 _ShadowedBox
,但阴影效果不会那么精确:
SingleChildScrollView(
clipBehavior: Clip.none,
scrollDirection: Axis.horizontal,
child: UnconstrainedBox(
child: Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
offset: const Offset(0.0, 6.0),
blurRadius: 38.0,
spreadRadius: 0.0,
color: Colors.red,
),
BoxShadow(
offset: const Offset(0.0, 6.0),
blurRadius: 46.0,
spreadRadius: 0.0,
color: Colors.green,
),
BoxShadow(
offset: const Offset(0.0, 6.0),
blurRadius: 10.0,
spreadRadius: 0.0,
color: Colors.blue,
),
],
),
child: Row(
children: List<Widget>.generate(10, (_) => _ShadowedBox()),
),
),
),
),
我发现的另一个解决方案是使用 Stack
小部件,所有阴影都在单独的 Row
中呈现,因此生成的阴影具有正确的形状。此方法的问题是您的小部件需要固定的 width
和 height
:
SingleChildScrollView(
clipBehavior: Clip.none,
scrollDirection: Axis.horizontal,
child: Stack(
children: [
Row(
children: List<Widget>.generate(
10,
(_) => Container(
margin: const EdgeInsets.symmetric(horizontal: 4),
width: 144,
height: 144,
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(cardRadius),
boxShadow: [
BoxShadow(
offset: const Offset(0.0, 6.0),
blurRadius: 38.0,
spreadRadius: 0.0,
color: Colors.red,
),
BoxShadow(
offset: const Offset(0.0, 6.0),
blurRadius: 46.0,
spreadRadius: 0.0,
color: Colors.green,
),
BoxShadow(
offset: const Offset(0.0, 6.0),
blurRadius: 10.0,
spreadRadius: 0.0,
color: Colors.blue,
),
],
),
),
),
),
Row(
children: List<Widget>.generate(10, (_) => _ShadowedBox()),
),
],
),
)
关于Flutter BoxShadow 重叠的 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68663090/
我想从 psd 文件中制作像这个框一样的阴影:我已经截图了: http://s3.postimg.org/k59bfo5s3/boxshadow.png 我不知道怎么用css代码来实现 但我的另一个想
我需要只在侧面显示一个 boxshadow。在 div 的底部没有阴影。我的 boxshadow css 在侧面和底部提供阴影,如下所示: box-shadow: 0 1px 3px rgba(0,
我正在尝试为标题下方创建一个类似于 https://github.com/RaghavMangrola/the-brighton-times 上的框阴影元素模型。 我已经尝试添加属性和值 .heade
我得到了这个设计: http://img526.imageshack.us/img526/1363/desginer.jpg 我正在尝试使用以下方法获得最佳结果: div.image
我有一个 Container,页面顶部有一个 BoxShadow 装饰,Container 下面是一个 ListView 里面有一些 Cards。我希望顶部 Container 在 ListView
我正在尝试创建一个 Row 容器,它们都有一个 BoxShadow。阴影非常大,因此跨越父级之外的空间,所以我在父级上使用 clipBehavior: Clip.none。 问题在于,对于行中的每个容
我正在用盒子阴影构建我自己的类似 Material 的卡片。我想将其中的几个组合在一个 PageView 中,以便我可以在卡片之间刷卡 - 每张 Card应该填满屏幕的整个宽度。 卡片上有 BoxSh
我正在使用 Fian 的 Waves对于涟漪效应。问题是当我将 box-shadow 属性添加到带有“waves-circle”类的按钮时,它没有显示任何阴影。 代码 .button { bac
http://jsfiddle.net/mstefanko/w5aAn/877/ 下面,我实现了我想要的效果,但有一个悬而未决的问题。因为我使用了一个单独的跨度并将其绝对定位在具有相对位置的框的顶部。
我想使用 CSS 创建下图中所示的白色边框。在窗口内设置 25px 的白色边框。我尝试使用 box-shadow inset 但是无法在窗口边缘之间创建空间。 我使用了这个 CSS: border:
我有一个页面设置如下 Header content Main Body Content 现在在标题类的 CSS 中,我将 .Header { box-shadow: 3px 3px 1
这样的影子有可能吗=> 我一直在阅读 BOXSHADOW ,但不知道如何实现这一点。由于类中的构造函数没有我想要的所需信息。可能我想实现的东西在FLUTTER中叫different。 代码: deco
我有一张带有盒子阴影的 table 。 Chrome 和 Firefox 显示的影子,但 safari 没有。您知道问题出在哪里吗? 我试过操纵影子,效果一样。 .tr-info { back
这是我此刻的代码: ClipRRect( borderRadius: BorderRadius.circular(11), child: Container( decoration:
我不相信 box-Shadow 在代码 2 上正确应用。有人可以告诉我我做错了什么吗?他们都使用 Box Shadow。 这很奇怪,因为如果它们都以完全相同的方式应用,那么是什么导致第二个代码的行为不
我试图在 flutter 中建立一个自定义列表项。当我尝试将框半径分配给列表项时,我遇到以下语法错误: **The argument type 'BoxShadow' can't be assigne
我想在这个容器中使用 Inkwell splash。 没有 Inkwell 小部件。 Expanded( child: Container( padding: Ed
我希望能够更改 boxShadow。我希望它每秒更改为不同的颜色。 我已经尝试了很多方法,但无法让它发挥作用。我真的很希望它能在 4 种颜色之间切换,但 2 种就可以了! var myVar = s
我似乎在使用 Chrome 而不是 FF 或 IE 时遇到了问题。如果我有一个 div Y N 像这样的 CSS #someDiv { width: 600px; paddin
所以,这就是它需要的样子 你在中心看到漂亮的白色效果,我试图重新创建它,但没有成功,这是我的代码: article .txt:after{ position:absolute; c
我是一名优秀的程序员,十分优秀!