这肯定与 Bootstrap 和 Kendo 依赖于不同的盒子模型的事实以及制作依赖于的元素与依赖于的元素box-sizing: border-box
混合的困难有关box-sizing: content-box
。
一般来说,剑道的所有造型都是基于标准content-box
模型。但是,Bootstrap 的所有样式都依赖于更易于使用的border-box
模型。两者最大的区别在于如何处理填充、边框等。content-box
它们是元素宽度的一部分,但border-box
它们不是。
Bootstrap 假设您当然想使用border-box
,为什么不呢!它有助于将页面上的所有内容设置为使用border-box
,包括 Kendo 小部件。就其本身而言,Kendo 知道 Bootstrap 可能会将所有内容设置为使用border-box
,因此它将所有内容设置回content-box
Kendo 小部件及其所有子项。所以现在如果你在任何与剑道相关的东西中嵌套任何与 Bootstrap 相关的东西,你会得到错误的盒子模型。一团糟。
我已经尝试了很多不同的技巧来尝试缓解这种情况,但事实是没有很好的方法来解决它。这是迄今为止我发现效果最好的 CSS 代码(它使用 CSS 属性选择器,因此它不适合旧版浏览器):
.border-box, .border-box * {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
[class^="k-"] {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
}
然后,您设置class='border-box'
任何可能嵌套在您知道将具有 Bootstrap 内容的 Kendo 小部件内的元素。