[英]HTML/CSS Checkbox text alignment with <span> or <div>
我试图使文本显示为与复选框内联并取决于边栏的宽度的块。
例
我已将代码粘贴到CodePen上 (请牢记屏幕分辨率/宽度等),我尝试了多次尝试,甚至从更改为,以及使用“向左浮动” 插入行内样式。 要从更改为,可以在javascript中的“此。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
<link
rel="stylesheet"
href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf"
crossorigin="anonymous"
/>
<link rel="stylesheet" href="//rawgit.com/iVantage/angular-ivh-treeview/master/dist/ivh-treeview.css">
<link rel="stylesheet" href="//rawgit.com/iVantage/angular-ivh-treeview/master/dist/ivh-treeview-theme-basic.css">
</head>
<body ng-app="bin">
<div ng-controller="DemoCtrl as demo">
<h3>Custom Node Templates</h3>
<div style=width:224px>
<div ivh-treeview="demo.stuff"
ivh-treeview-node-tpl="demo.tpl"
ivh-treeview-options="demo.customTreeViewOpts">
</div>
</div>
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.8/angular.js"></script>
<script src="//rawgit.com/iVantage/angular-ivh-treeview/master/dist/ivh-treeview.js"></script>
</body>
</html>
var stuff = [
{
label: "Sales",
selected: false,
children: [
{
label: "Sales Program",
selected: false,
children: [
{
label: "Commercial Dealer Fleet Program",
selected: false
},
{
label: "Courtesy Car Program",
selected: false
},
{
label: "VIP & Employee Purchase Program",
selected: false
},
{
label: "Policies",
selected: false
}
]
},
{
label: "Customer Rebate Programs",
selected: false,
children: [
{
label: "Commercial Dealer Fleet Program",
selected: false
},
{
label: "Courtesy Car Program",
selected: false
},
{
label: "VIP & Employee Purchase Program",
selected: false
},
{
label: "Policies",
selected: false
}
]
}
]
},
{
label: "Fleet",
selected: false
}
];
var app = angular.module('bin', ['ivh.treeview']);
app.config(function(ivhTreeviewOptionsProvider) {
ivhTreeviewOptionsProvider.set({
defaultSelectedState: false,
validate: true,
expandToDepth: -1
});
});
app.controller('DemoCtrl', function() {
this.stuff = stuff;
this.tpl = `
<div title="{{trvw.label(node)}}" >
<span ivh-treeview-toggle >
<span ivh-treeview-twistie>
</span>
</span>
<span ng-if="trvw.useCheckboxes()" ivh-treeview-checkbox >
</span>
<span class="ivh-treeview-node-label" ivh-treeview-toggle >
{{trvw.label(node)}}
</span>
<div ivh-treeview-children></div>
</div>`
this.customTreeViewOpts = {
// useCheckboxes: false
// twistieLeafTpl: ""
twistieExpandedTpl: '<span class="fas fa-minus-square"></span>',
twistieCollapsedTpl: '<span class="fas fa-plus-square"></span>',
twistieLeafTpl: '<span class="fas fa-minus-square" style=" visibility: hidden;"></span>'
// nodeTpl: "..."
// onToggle: this.awesomeCallback
};
});
一种方法是在节点包装上添加一些填充,并在复选框内容上使用负边距进行调整。 我在外部div(.tree-node-adjusted)中添加了一个包装器(.tree-node-adjusted-wrapper)和一个类。 这种方法有点麻烦,可以计算px偏移量(ems或其他方式)或从字体大小中导出。
模板
this.tpl = `
<div title="{{trvw.label(node)}}" class="tree-node-adjusted" >
<div class="tree-node-adjusted-wrapper">
<span ivh-treeview-toggle >
<span ivh-treeview-twistie>
</span>
</span>
<span ng-if="trvw.useCheckboxes()" ivh-treeview-checkbox >
</span>
<span class="ivh-treeview-node-label" ivh-treeview-toggle >
{{trvw.label(node)}}
</span>
</div>
<div ivh-treeview-children></div>
</div>`
CSS(在我的Codepen示例中为LESS):
.ivh-treeview .tree-node-adjusted {
.tree-node-adjusted-wrapper {
padding-left: 40px;
& > span:nth-child(1) {
margin-left: -40px;
}
}
}
(另一种解决方案可能是使用一些左侧填充使节点相对位置,并绝对定位复选框,这可能会更精确)。
尝试将具有扭曲感的复选框和标签包装在带有display:flex
的容器中,并将ivh-treeview-children
指令保留为该容器的兄弟。
更新的Codepen: https ://codepen.io/jtrussell/pen/qzQNdm ? editors = 0010
更新了节点模板代码段:
<div title="{{trvw.label(node)}}">
<div style="display:flex">
<span ivh-treeview-toggle >
<span ivh-treeview-twistie>
</span>
</span>
<span ng-if="trvw.useCheckboxes()" ivh-treeview-checkbox >
</span>
<span class="ivh-treeview-node-label" ivh-treeview-toggle>
{{trvw.label(node)}}
</span>
</div>
<div ivh-treeview-children></div>
</div>
结果截图:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.