如何计算剩余空闲 space 或 div 的宽度?
How to compute the remaining free space or width of div?
我正在寻找一种方法来计算动态添加内部跨度后 div 的剩余宽度
GetWidth() {
let txt = divElement;
console.log(event.target.closest('span').scrollWidth);
}
HTML
<div
class="wrapper"
style="border: 1px solid gray; height: auto; width: 230px"
>
<span
*ngFor="let item of pgFilters[i].value; let i = index"
class="cont"
>
{{ item }}
</span>
<input (keyup.enter)="add($event, i)" class="inputx" />
</div>
风格
.wrapper {
display: flex;
flex-wrap: wrap;
}
.inputx {
flex-grow: 1;
}
TS
add(event: any, index: number): void {
const value = (event.target.value || '').trim();
if (value) {
this.pgFilters[index].value.push(value);
event.target.value = '';
}
我已经添加了完整的代码..这里我尝试自己实现芯片控制..
你可以像这样使用parentElement
function remaining(){
let txt = divElement;
let parent=txt.parentElement;
let remain=parent.offsetWidth-txt.offsetWidth}
如果你可能在这个元素中有多个 child 你可以这样做
function remaining(){
let txt = divElement;
let parent=txt.parentElement;
Let child=parentElement.children;
let remain=parent.offsetWidth;
child.foreach(element=>{
remain-=element.offsetWidth;
}
conole.log(remain);
}
这应该可以解决问题:
它使用yourSpan.getBoundingClientRect()
得到了最后一个<span>
的直角坐标..所以返回对象的right
属性描述了距离左边的距离div... 所以如果你知道父 div
的宽度.. 你可以从 div
中减去 right
属性 的值宽度。
function GetRemainingWidth(){
var div = document.getElementById("div1");
var w = div.offsetWidth - div.children[div.children.length - 1].getBoundingClientRect().right;
return `${w}px`
}
console.log(GetRemainingWidth());
<div id="div1">
I weas here
<span>I am Great!</span> <span>Are you?</span>
</div>
要使此代码正常工作...请在 html 中执行以下操作。将 <span>
元素放入与输入不同的包装器中。
<div class="wrapper" style="border: 1px solid gray; height: auto; width: 230px">
<div class="filter-elements" id="filter-elements">
<span *ngFor="let item of pgFilters[i].value; let i = index"
class="cont"
>
{{ item }}
</span>
</div>
<input (keyup.enter)="add($event, i)" class="inputx" />
</div>
我正在寻找一种方法来计算动态添加内部跨度后 div 的剩余宽度
GetWidth() {
let txt = divElement;
console.log(event.target.closest('span').scrollWidth);
}
HTML
<div
class="wrapper"
style="border: 1px solid gray; height: auto; width: 230px"
>
<span
*ngFor="let item of pgFilters[i].value; let i = index"
class="cont"
>
{{ item }}
</span>
<input (keyup.enter)="add($event, i)" class="inputx" />
</div>
风格
.wrapper {
display: flex;
flex-wrap: wrap;
}
.inputx {
flex-grow: 1;
}
TS
add(event: any, index: number): void {
const value = (event.target.value || '').trim();
if (value) {
this.pgFilters[index].value.push(value);
event.target.value = '';
}
我已经添加了完整的代码..这里我尝试自己实现芯片控制..
你可以像这样使用parentElement
function remaining(){
let txt = divElement;
let parent=txt.parentElement;
let remain=parent.offsetWidth-txt.offsetWidth}
如果你可能在这个元素中有多个 child 你可以这样做
function remaining(){
let txt = divElement;
let parent=txt.parentElement;
Let child=parentElement.children;
let remain=parent.offsetWidth;
child.foreach(element=>{
remain-=element.offsetWidth;
}
conole.log(remain);
}
这应该可以解决问题:
它使用yourSpan.getBoundingClientRect()
得到了最后一个<span>
的直角坐标..所以返回对象的right
属性描述了距离左边的距离div... 所以如果你知道父 div
的宽度.. 你可以从 div
中减去 right
属性 的值宽度。
function GetRemainingWidth(){
var div = document.getElementById("div1");
var w = div.offsetWidth - div.children[div.children.length - 1].getBoundingClientRect().right;
return `${w}px`
}
console.log(GetRemainingWidth());
<div id="div1">
I weas here
<span>I am Great!</span> <span>Are you?</span>
</div>
要使此代码正常工作...请在 html 中执行以下操作。将 <span>
元素放入与输入不同的包装器中。
<div class="wrapper" style="border: 1px solid gray; height: auto; width: 230px">
<div class="filter-elements" id="filter-elements">
<span *ngFor="let item of pgFilters[i].value; let i = index"
class="cont"
>
{{ item }}
</span>
</div>
<input (keyup.enter)="add($event, i)" class="inputx" />
</div>