【发布时间】:2021-06-30 00:39:18
【问题描述】:
我有一个弹性框和一个下拉菜单,用户可以在其中选择是否希望弹性框中的项目左对齐(默认 - 未设置边距值)或居中(边距:0 自动)。
更改下拉选择会触发一个函数,该函数使用以下代码更改 ID 为“PhotoBox”的 div 的边距属性:
alignmentChange(alignment) {
switch(alignment) {
case "Left": document.getElementById('PhotoBox').style.margin = '';
case "Centre": document.getElementById('PhotoBox').style.margin = '0 auto';
}
}
我也尝试过使用 .removeProperty:
alignmentChange(alignment) {
switch(alignment) {
case "Left": document.getElementById('PhotoBox').style.removeProperty('margin');
case "Centre": document.getElementById('PhotoBox').style.margin = '0 auto';
}
}
但两者都不起作用 - 例如,内容不会改变屏幕上的对齐方式。但是,我通过在边距更改后弹出一个测试(警报)语句对它们进行了测试,以提醒“PhotoBox”的新边距样式 - 并且警报确实反映了边距样式已成功更新!只是没有反映在屏幕上?
不过,我已经尝试了几个使用“color”和“fontFamily”属性的测试用例,它们确实起作用,所以我知道我的下拉菜单或函数没有任何问题。 p>
alignmentChange(alignment) {
switch(alignment) {
case "Left": document.getElementById('PhotoBox').style.color = 'yellow';
case "Centre": document.getElementById('PhotoBox').style.color = 'blue;
}
}
例如,这个使用颜色的作品。
当我在“PhotoBox.css”中手动将“PhotoBox”的边距属性设置为“0 auto”时,这也有效,所以我知道这不是我的布局的问题 - 将边距设置为“0 auto”在 CSS 文件本身内确实将内容居中。
如果它有帮助的话,我在原始 CSS 文档 PhotoBox.css 中得到了所有信息:
#PhotoBox{
flex-direction: row;
flex-wrap: wrap;
}
当我使用颜色或字体系列等测试属性而不是边距时,为什么我的 JS 函数可以正常工作?但是如果我直接在 CSS 文件中更改边距 是否有效?
【问题讨论】:
-
对于
alignmentChange更改color的示例,颜色永远不会是yellow,它只会将其设置为blue。所以我不会认为该代码有效。其他alignmentChange函数也存在同样的问题。 -
请提供一个简化的例子来显示缺陷。 jsfiddle.net/ukg3j6ma 设置边距如您所见
-
@Sammy 样式是否适用于 html 元素?
-
检查浏览器开发者工具的元素面板中的元素,并检查
margin属性是否设置。请注意,如果您使用带有justify-content值的display: flex,则在孩子上设置margin可能无关紧要。与往常一样,minimal reproducible example 会有所帮助。使用 Stack Snippets(图标在编辑器工具栏中看起来像<>)创建一个可运行的,允许其他人在现场复制行为。
标签: javascript css