Kendo Grid弹窗自定义编辑器模板中Bootstrap折叠面板问题求助
解决Kendo Popup中Bootstrap Accordion的两个问题
嘿,你碰到的这两个问题确实是Kendo弹窗的默认行为和Bootstrap组件的样式/行为冲突搞出来的,我来帮你逐个搞定:
问题1:折叠面板展开时先过度展开再回缩
这个问题的核心是Kendo Window的自动高度调整机制和Bootstrap折叠的动画效果打架了。Kendo Window会实时监听内容区域的尺寸变化,而Bootstrap的折叠是有过渡动画的——在动画过程中,面板高度从0慢慢涨到目标值,这期间Kendo会反复计算并调整弹窗高度,就出现了你看到的“先撑大再缩回去”的现象。
解决起来有两种简单的方式:
- 方式一:用CSS限制Kendo的高度调整
给Kendo的内容容器加样式,阻止它在动画过程中频繁调整:.k-window-content { overflow: hidden !important; height: auto !important; } /* 再给弹窗内容区加个最小高度,避免动画时的高度跳动 */ .popup { min-height: 300px; /* 可以根据你的实际内容调整这个值 */ } - 方式二:给Kendo弹窗设置固定高度
如果你知道弹窗的大致高度,也可以在初始化编辑器弹窗时直接指定高度,这样Kendo就不会自动调整了:// 假设你是通过Kendo Grid的edit事件初始化弹窗 $("#grid").kendoGrid({ edit: function(e) { e.sender.editable.options.window.options.height = "500px"; // 按需设置高度 } });
问题2:折叠面板标题悬停时是文本光标不是手型
这个问题很直接——Bootstrap默认只有当.panel-title里面是<a>标签时,才会自动设置cursor: pointer(手型光标),但你是直接在<h4>标签上加的data-toggle属性,所以没有触发这个样式。
解决方法选一个就行:
- 方法一:给
.panel-title加CSS样式
直接强制设置光标样式:.panel-title { cursor: pointer; } - 方法二:改用Bootstrap默认的
<a>标签结构(更推荐)
按照Bootstrap的规范来写,把标题内容放到<a>标签里,这样不仅有手型光标,还能继承Bootstrap的其他交互样式:<div class="panel-heading"> <h4 class="panel-title"> <a data-toggle="collapse" data-target="#collapseOne"> Collapsible Group Item #1 </a> </h4> </div>
修改后的完整代码示例
<style> .popup { width: 100%; padding-top: 20px; padding-right: 30px; padding-left: 30px; min-height: 300px; /* 解决过度展开问题 */ } .k-window-content * { -webkit-box-sizing: border-box; box-sizing: border-box; } /* 解决光标问题的样式 */ .panel-title { cursor: pointer; } </style> <div class="container popup"> <div class="panel-group" id="accordion"> <!-- First Panel --> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title" data-toggle="collapse" data-target="#collapseOne"> Collapsible Group Item #1 </h4> </div> <div id="collapseOne" class="panel-collapse collapse"> <div class="panel-body"> Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. </div> </div> </div> <!-- Second Panel --> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title" data-toggle="collapse" data-target="#collapseTwo"> Collapsible Group Item #2 </h4> </div> <div id="collapseTwo" class="panel-collapse collapse"> <div class="panel-body"> Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. </div> </div> </div> <!-- Third Panel --> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title" data-toggle="collapse" data-target="#collapseThree"> Collapsible Group Item #3 </h4> </div> <div id="collapseThree" class="panel-collapse collapse"> <div class="panel-body"> Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. </div> </div> </div> </div> </div>
这样应该就能完美解决你遇到的两个问题啦,本质就是Kendo和Bootstrap的样式/行为冲突,针对性调整一下就OK。
内容的提问来源于stack exchange,提问作者mgh75
相关产品推荐
相关产品推荐

