GVKun编程网logo

javascript-如果行达到最大高度,如何拆分表列

10

此处将为大家介绍关于javascript-如果行达到最大高度,如何拆分表列的详细内容,此外,我们还将为您介绍关于javascript–AngularAccordion没有扩大高度、javascript

此处将为大家介绍关于javascript-如果行达到最大高度,如何拆分表列的详细内容,此外,我们还将为您介绍关于javascript – Angular Accordion没有扩大高度、javascript – 如何拆分大型typescript index.d.ts文件、javascript – 让高度确定高度、javascript – 跨多行设置3个元素的高度,取最大值的有用信息。

本文目录一览:

javascript-如果行达到最大高度,如何拆分表列

javascript-如果行达到最大高度,如何拆分表列

我有一个从数据库循环到表的数据.但是我只需要1列,除非该行超出了我的高度限制,那么它应该动态创建另一列或将数据传输到另一列并将数据拆分到该新列,这可能吗?

echo'<table>';
for($res->result() as $rows){
    echo'<tr>';
        echo'<td>'.$rows-Name.'</td>';
    echo'</tr>';
}
echo'</table>';

输出是这个

Cynthia Abanes 
Melde Feliciano 
Chelsea MacKinnon 
Christine Kostiuk 
Erick 
Vicky Maglinao 
norman Murehwa 
Ronda 
Elvira Rivera 
Hiyasmin Gajudo 
Mary Jane Reyes 
Ronnie De Guzman 
Annaliza Camino 
Edwin Marino
Lucelle Caseres 
Gayly Reniedo
Joseph Javier 
Herminigildo Urbano 
Herminigildo UrbanO

应该是这样

Cynthia Abanes       Ronda             Gayly Reniedo
Melde Feliciano      Hiyasmin Gajudo   Joseph Javier 
Chelsea MacKinnon    Mary Jane Reyes   Herminigildo Urbano 
Christine Kostiuk    Ronnie De Guzman  Herminigildo UrbanO
Erick                Annaliza Camino 
Vicky Maglinao       Edwin Marino
norman Murehwa       Lucelle Caseres 

解决方法:

这是使用flexbox的解决方案.不要将数据打印到表中,而要使用列表(ul).

注意:调整高度会自动将数据移到下一列.

ul {
  list-style: none;
  display: flex;
  flex-direction: column;
  flex-flow: column wrap;
  height: 130px;
}
<ul>
  <li>Cynthia Abanes</li>
  <li>Melde Feliciano</li>
  <li>Chelsea MacKinnon</li>
  <li>Christine Kostiuk</li>
  <li>Erick</li>
  <li>Vicky Maglinao</li>
  <li>norman Murehwa</li>
  <li>Ronda</li>
  <li>Elvira Rivera</li>
  <li>Hiyasmin Gajudo</li>
  <li>Mary Jane Reyes</li>
  <li>Ronnie De Guzman</li>
  <li>Annaliza Camino</li>
  <li>Edwin Marino</li>
  <li>Lucelle Caseres</li>
  <li>Gayly Reniedo</li>
  <li>Joseph Javier</li>
  <li>Herminigildo Urbano</li>
  <li>Herminigildo UrbanO</li>
</ul>

javascript – Angular Accordion没有扩大高度

javascript – Angular Accordion没有扩大高度

我正在使用角度手风琴指令隐藏/显示内容.

我面临的问题是内容容器的高度没有变化.

这是一个吸烟者:http://plnkr.co/edit/oWXrqoJpaYPDbe4TwT3c?p=preview

如果单击“显示更多”,则可以看到内容是如何隐藏的,而不是显示作业的高度更改.

JS:

app.directive('sliderContentDirective',function () {
    return {
        restrict:'A',compile: function (element,attr) {
            // wrap tag
            var contents = element.html();
            element.html('<div>' + contents + '</div>');

            return function postLink(scope,element,attrs) {
                // default properties
                attrs.duration = (!attrs.duration) ? '0.7s' : attrs.duration;
                attrs.easing = (!attrs.easing) ? 'ease-in-out' : attrs.easing;
                element.css({
                    'overflow': 'hidden','height': '0px','transitionProperty': 'height','transitionDuration': attrs.duration,'transitionTimingFunction': attrs.easing
                });
            };
        }
    };
});

app.directive('sliderToggleDirective',function($document,$timeout) {
    return {
        restrict: 'AE',scope: { 
            target: "@"
        },link: function(scope,attrs) {             

            var timeoutFunc = function () {
                var target = angular.element($document[0].querySelector("#" + scope.target))[0];

                attrs.expanded = false;  
                element.bind('click',function() {

                    var content = target.querySelector('.slideable_content');
                    if(!attrs.expanded) {
                        content.style.border = '1px solid rgba(0,0)';
                        var y = content.clientHeight;
                        content.style.border = 0;
                        target.style.height = y + 'px';
                    }
                    else {
                        target.style.height = '0px';
                    }

                    attrs.expanded = !attrs.expanded;
                });
            }

            $timeout(timeoutFunc,0);
        }
    }
});

如果我检查show-jobs元素,我可以看到它的初始高度为312px.如果我删除它,然后它按预期工作.

解决方法

正如Giliar已经说过的,问题是你有一个固定的高度,它不允许你的section元素自动获得它的高度以适应它的所有内容(包括新扩展的手风琴).我可以向此提出的解决方案(就我所知,这也是Bootstrap的功能)

>在动画结束时将节的高度设置为自动,这样如果展开嵌套的div,则该节将正确展开.
>在用户尝试将其关闭之前,将高度设置为固定高度,然后将高度设置为0,以便关闭动画正常工作.

要完成第一部分,您可以定义一个函数,将部分的高度调整为auto,并在展开动画完成后调用它.

var adjustHeightFunc = function() {
    var target = angular.element($document[0].querySelector("#" + scope.target))[0];
    if (attrs.expanded) {
        var content = target.querySelector('.slideable_content');
        target.style.height = 'auto';
    }
}

由于展开动画需要0.7秒,你可以调用adjustHeightFunc函数,超时为0.8秒(我觉得这不是最佳选择,因为如果你改变动画的持续时间,你还需要改变这个超时,但它是到目前为止我找到的最佳解决方案,欢迎任何其他建议).因此,在onClick函数的最后,您可以:

$timeout(adjustHeightFunc,800);

要做的第二部分是在折叠部分时不要将部分的高度设置为0,而是始终将其设置为其内容的高度.执行此操作后,如果该部分应该折叠,则使用$timeout调用一个单独的函数,值为0(这样它将在一个单独的摘要周期执行),它将该部分的高度设置为0,从而触发崩溃动画.你的onClick函数因此变成这样:

element.bind('click',function() {
    var content = target.querySelector('.slideable_content');
    var y = content.clientHeight;
    target.style.height = y + 'px';
    if(!attrs.expanded) {
        content.style.border = '1px solid rgba(0,0)';
        content.style.border = 0;
    }
    else {
        $timeout(closeAccordionFunc,0);
    }

    attrs.expanded = !attrs.expanded;
    $timeout(adjustHeightFunc,800);
});

见updated Plunker.

编辑:事实证明,从注释设置中,closeAccordionFunc将以超时0执行,并不适用于所有浏览器.解决方法是声明一个CSS类,它将元素的高度设置为auto(使用!important来直接覆盖元素上的高度集),并使用Angular的$animate服务向元素添加/删除此类并执行删除类后closeAccordionFunc.因此更新的onClick函数是:

element.bind('click',0)';
        content.style.border = 0;
    }
    else {
      $animate.removeClass(angular.element(target),'auto',function(){$timeout(closeAccordionFunc);});
    }

    attrs.expanded = !attrs.expanded;
    if (attrs.expanded) {
      $timeout(adjustHeightFunc,800);
    }
});

另见in Plunker.

javascript – 如何拆分大型typescript index.d.ts文件

javascript – 如何拆分大型typescript index.d.ts文件

我们的应用程序有许多对象,我们可以大致分为3类; ‘核心’,’app’和’对象’.

我在网上跟踪了一个基本的Typescript教程,目前有一个index.d.ts,它有这种布局:

interface AH {

}

declare var ah: AH;

declare module 'ah' {
    export = ah;
}

declare module ah {

    module objects {
        // much objects
    }

    module app {
        //many app
    }

    module core {
        //such core
    }
}

但是由于我们使用了古老的源代码控制,将这个单个文件分解为3个单独的文件,包括应用程序,核心和对象,将“命名空间”作为ah.app.blah,ah.core.blah和ah.objects.blah.

我怎样才能做到这一点?

解决方法

如果您没有在另一个项目中使用此库,则不需要声明模块.

看起来你有两个选择:

>导出要在单独文件中公开的类型声明,并在需要时导入它们.由于这似乎是最常见的做法,当您处理外部模块时,我认为这有我个人的偏好.

app.d.ts(~core.d.d,objects.d.ts)

export interface theAppInterface {}

src / index.ts(示例用法)

import { theAppInterface } from '../app'
import { theCoreInterface } from '../core'

let appUsage: ah.app.theAppInterface

>在全局声明文件中声明单独的类别,因此它们被放入全局命名空间中,您不必在任何地方单独导入它们.例如.

app.d.ts(~core.d.d,objects.d.ts)

declare namespace ah {
  namespace app {
    interface theAppInterface {}
  }
}

SRC / index.ts

let appUsage: ah.app.theAppInterface
let coreUsage: ah.core.theCoreInterface

javascript – 让高度确定高度

javascript – 让高度确定高度

我在< div>中有一段文字.随长度和高度而变化.我希望div的最小高度为100px,但随着< p>的高度增长而增长.增加80px以上.我为< div>设置了css属性高度:100px但是当< p>超过80px的文本刚刚溢出< div>和< div>的高度保持不变.我该怎么办?

码:

<div id="outer_Box">
    <div id="Box">
        <p> Some long paragraph of content here </p>
    </div>
</div>

CSS:

#outer_Box {
    width: 300px;
    min-height: 100px;
}

#Box{
    width: 300px;
    min-height: 90px;
}

id =“Box”的div确实改变了它的高度以包含< p>完全,但id =“outer_Box”的div没有改变它的高度!

如果可能的话,对CSS解决方案而不是jQuery解决方案感兴趣,我会使用任何有效的方法.选择纯CSS解决方案的原因是因为在用户执行鼠标悬停之前div不存在.想知道如何使用尚未存在的css来定位div

解决方法:

保持你的CSS中div的最小高度设置,然后我将使用jquery的高度函数来计算段落高度.在您的javascript中试试这个:

$(document).ready(function(){
    var h = $('div p').height();
    $('div').css("height", h);
});

javascript – 跨多行设置3个元素的高度,取最大值

javascript – 跨多行设置3个元素的高度,取最大值

我有一个div左侧浮动的布局,列数为3.在这些图层中是不同长度的文本,因此图层处于不同的高度,因此没有正确对齐,也看起来不太好,因为边框不匹配高度.

我可以为所有div设置一个固定的高度但这会在某些行上留下巨大的空白区域,所以我写了一些JQuery来获取所有div的最大值并将所有高度设置为该高度,以便它们正确排列.该脚本是:

var sectionheight = new Array(); //set empty array
$(".section-title").each(function () { //get all div elements
    var value = $(this).height(); //get div height
    sectionheight.push(value); //write height to array
});
var newsectionheight = Math.max.apply(Math,sectionheight); //get largest value in array
$('.section-title').height(newsectionheight); //set height of all elements to largest

这样可以正常工作,但在设计中,一些行只有1行文本,因此它调整该行的大小与使用5行文本的顶行一样大.

我想要实现的是它需要前3个div,获得最大值然后将这3个div高度设置为该值.然后对第4到第6个div重复此操作,以此类推(因为div在3列中)

我可以使用$(“.section-title”)来做一个非常长期的解决方案.eq(2)但我可以想象这不是一个理想的做法.

任何建议表示赞赏

编辑一些div的例子(css在html中不可见,仅用于示例):

最佳答案
尝试

var $sections = $('.section-title');

$sections.filter(':nth-child(3n-2)').each(function () {
    var $this = $(this),$els = $this.nextAll(':lt(2)').addBack();

    var sectionheight = new Array();
    $els.each(function () {
        var value = $(this).height();
        sectionheight.push(value);
    });
    var newsectionheight = Math.max.apply(Math,sectionheight);
    $els.height(newsectionheight);
})

演示:Fiddle

我们今天的关于javascript-如果行达到最大高度,如何拆分表列的分享就到这里,谢谢您的阅读,如果想了解更多关于javascript – Angular Accordion没有扩大高度、javascript – 如何拆分大型typescript index.d.ts文件、javascript – 让高度确定高度、javascript – 跨多行设置3个元素的高度,取最大值的相关信息,可以在本站进行搜索。

本文标签:

上一篇javascript-jQuery不适用于jsdom / enzyme

下一篇oppofindx3pro设怎样置双击锁屏(oppo find x3双击锁屏)