【问题标题】:HTML/CSS Checkbox text alignment with <span> or <div>HTML/CSS 复选框文本与 <span> 或 <div> 对齐
【发布时间】:2019-11-16 05:59:17
【问题描述】:

我正在尝试使文本显示为与复选框内联的块,并取决于侧边栏的宽度。

例子

Current View

Desired View

我已将代码粘贴到CodePen(请记住屏幕分辨率/宽度等),我尝试了多次尝试,甚至更改为“向左”以及使用“向左浮动”放置内联样式。可以在“this.”下的 javascript 中更改 from to。

<!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
  };
});

【问题讨论】:

    标签: javascript html css angularjs checkbox


    【解决方案1】:

    尝试使用display:flex 将twisty、复选框和标签包装在一个容器中,并将ivh-treeview-children 指令作为该容器的兄弟。

    更新代码笔:https://codepen.io/jtrussell/pen/qzQNdm?editors=0010

    更新节点模板sn-p:

    <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>
    

    结果截图:

    【讨论】:

    • 这太好了,有没有办法可以将图标与 display: flex 分开?
    • Nvm,我得到了解决方案,这已经解决了,谢谢。
    【解决方案2】:

    一种方法是向节点包装器添加一些填充,并在复选框内容上调整负边距。我在外部 div 中添加了一个包装器(.tree-node-adjusted-wrapper)和一个类(.tree-node-adjusted)。这种方法有点小技巧,可以计算 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;
        }
      }
    }
    
    

    See example in Codepen

    (另一种解决方案可能是使用一些左侧填充使节点相对位置,并绝对定位复选框 - 这可能更精确)。

    【讨论】:

    • 这是一个很好的方法,我注意到当你得到更小的宽度时,文本被向下推,谢谢
    猜你喜欢
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2013-03-14
    • 2010-09-28
    • 2018-04-24
    • 2016-07-27
    相关资源
    最近更新 更多