<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] >[success] # splitpane -- 分割面板組件 ~~~ 1.splitpane -- 分割面板組件 介紹,是一個可以拖動菜單寬度,可以生成想要 的菜單寬度和內容寬度的一種布局方式 ~~~ >[danger] ##### 思想總結 ~~~ 1.做一個布局組件,或者其他類型組件的時候,將組件內部最外層的寬和高 設置成100%,當你去調用組件的時候,就可以通過設置調用組件包裹的 dom,去設置這個dom即可讓組件寬高變成自己想要的 2.左右布局傳統的形式是float浮動來設置布局 3.可以用定位的形式來進行布局調整 4.要用數據去驅動這個組件邏輯 5.計算圖片中,紅色區域在正中間(圖片見代碼思想總結第五條) ~~~ >[info] ## 思想總結代碼 ~~~ 1.下面代碼組件 統一是'split-pane' ~~~ >[danger] ##### 思想總結第一條和第二條 ~~~ 1. 組件整個根節點'split-pane-wrapper' 這個樣式寬和高被設置成了百分百, 當你在調用的時候例如下面案例只需要將'split-pane-con'定義好想要的寬高 即可: <template> <div class="split-pane-con"> <split-pane></split-pane> </div> </template> 2.在less 語法中'&-'是縮寫上級名稱例如下面案例中的'&-left'等同于'pane-right' 3.注意class命名規則'pane pane-lef' 和 'pane pane-right' 可以將共同的樣式 寫在'pane'也讓命名更加規范 4.數據操作vue樣式,讓整個布局動起來 ~~~ ~~~ <template> <div class="split-pane-wrapper"> <div class="pane pane-left"></div> <div></div> <div class="pane pane-right"></div> </div> </template> <script> export default { name: "split-pane" } </script> <style lang="less"> .split-pane-wrapper{ width: 100%; height: 100%; .pane{ float:left; width: 50%; height: 100%; &-left{ background: brown; } &-right{ background: chartreuse; } } } </style> ~~~ >[danger] ##### 思想總結第三條 ![](https://box.kancloud.cn/d50762a53cc1550bf70f6e4519f0b96a_699x227.png) ~~~ <template> <div class="split-pane-wrapper"> <div class="pane pane-left"></div> <div></div> <div class="pane pane-right"></div> </div> </template> <script> export default { name: "split-pane" } </script> <style lang="less"> .split-pane-wrapper{ width: 100%; height: 100%; /*定位位置一*/ position: relative; .pane{ /*定位位置二直接利用pane 設置左右公共的樣式*/ position: absolute; height: 100%; /*設置top共同位置*/ top:0; &-left{ /*設置左側的寬度*/ width: 30%; background: brown; } &-right{ /*設置右側內容區域*/ right: 0; bottom: 0; left: 30%; background: chartreuse; } } } </style> ~~~ >[danger] ##### 思想總結第四條 ~~~ 1.用數據去驅動的時候,可以先找共同點,所謂的共同點例如這個案例,控 制左右布局的寬度都是30%,只不過右面是寬度百分之30,左面用了定位 距離左面left距離30% 2.利用這個思想下面的案例做一個按鈕每次減去2%,讓整個左右布局形成 動態變化 3.數據變化要使用計算屬性去做,有一些需要基礎值去拼接的數據,可以不 用在data 直接拼接好,反而可以利用計算屬性重新組合,這樣數據和拼接 分開我們只要關心data中的數據即可,所有的二次加工個計算屬性 ~~~ ~~~ <template> <div class="split-pane-wrapper"> <div class="pane pane-left" :style="{width:leftOffsetPercent}"> <button @click="handleClick">點擊減少左側寬度</button> </div> <div></div> <div class="pane pane-right" :style="{left:leftOffsetPercent}"></div> </div> </template> <script> export default { name: "split-pane", data(){ return{ // 在這定義一個值。這樣用戶可以直接指定占比的值 // 在頁面css 布局使用的值 使用計算屬性拼接即可 leftOffset:0.3 } }, methods:{ handleClick(){ this.leftOffset -= 0.02 } }, computed:{ // 動態屬性去拼接生成css 實際需要的代%形式的數據 leftOffsetPercent(){ return `${this.leftOffset * 100}%` } }, } </script> <style lang="less"> .split-pane-wrapper{ width: 100%; height: 100%; position: relative; .pane{ position: absolute; height: 100%; top:0; &-left{ /*width: 30%;*/ background: brown; } &-right{ right: 0; bottom: 0; /*left: 30%;*/ background: chartreuse; } } } </style> ~~~ >[danger] ##### 思想總結第五條 ![](https://box.kancloud.cn/73119425a98b95b8f3d98989ac9f9970_416x226.png) ~~~ 1.根據第五條我們要保證紅色區域在,左右布局的中間位置,也就是在褐色 區域,和綠色區域各占比一半 2.根據第四條數據驅動原則,紅色條想到達指定的位置也是需要有參照,可以 跟左側綠色定位方式,定位紅色區域使用left方式定位,想讓它居中的話就是 left偏移值-紅絲條寬度/2 ~~~ ~~~ <template> <div class="split-pane-wrapper"> <div class="pane pane-left" :style="{width:leftOffsetPercent}"> <button @click="handleClick">點擊減少左側寬度</button> </div> <div class="pane-trigger-con" :style="{left:triggerLeft,width:triggerWidthPx}"></div> <div class="pane pane-right" :style="{left:leftOffsetPercent}"></div> </div> </template> <script> export default { name: "split-pane", data(){ return{ // 在這定義一個值。這樣用戶可以直接指定占比的值 // 在頁面css 布局使用的值 使用計算屬性拼接即可 leftOffset:0.3, triggerWidth:8 } }, methods:{ handleClick(){ this.leftOffset -= 0.02 } }, computed:{ // 動態屬性去拼接生成css 實際需要的代%形式的數據 leftOffsetPercent(){ return `${this.leftOffset * 100}%` }, triggerWidthPx(){ return `${this.triggerWidth}px` }, triggerLeft(){ return `calc(${this.leftOffset * 100}% - ${this.triggerWidth/2}px)` }, }, } </script> <style lang="less"> .split-pane-wrapper{ width: 100%; height: 100%; position: relative; .pane{ position: absolute; height: 100%; top:0; &-left{ /*width: 30%;*/ background: brown; } &-right{ right: 0; bottom: 0; /*left: 30%;*/ background: chartreuse; } &-trigger-con{ z-index: 100; height: 100%; background: red; position: absolute; top: 0; } } } </style> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看