如何给予一个元素空间从相反/同一侧没有使用右和左方向在CSS中?

jq6vz3qz  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(74)

假设我有两个HTML格式的按钮-

<button class="save">Save</button>
<button class="cancel">Cancel</button>

cancel按钮为LTR时,我想给它从左侧起10 px的边距,当它为RTL时,我想给它从右侧起10 px的边距。
使用Javascript,我可以做得很好,就像这样-

let cancel = document.querySelector('.cancel');
// Suppose, the "direction" is an input variable.
cancel.style[direction == 'ltr' ? 'margin-left' : 'margin-right'] = '10px';

如果我给予一个例子,在下面的CSS属性中,我们只使用startend值,它们会根据页面方向自动调整元素的左右方向。

text-align: end;
text-align: start;
justify-content: start;
align-items: end;

类似上面的东西,我想知道是否有任何方法来设置空间(无论是边距或填充)从相反/相同的方向,而不提到右和左在CSS中。
许多现代的框架如Vuetify从它们内置的helper类处理这类情况(根据LTR和RTL设置空间)(尽管JS或任何CSS属性必须在这些概念后面运行),但问题是,这只可能使用CSS吗?

7lrncoxx

7lrncoxx1#

尝试margin-inline-start: (some value);,当您切换到RTL时,此选项会自动更改

6kkfgxo0

6kkfgxo02#

备选案文1:内嵌边距

.cancel {
  margin-inline-start: 10px;
  writing-mode: horizontal-tb;
  direction: rtl;
}

备选案文2:伪类之前

.cancel::before {
  content: "";
  display: inline-block;
  width: 10px;
}

相关问题