get element height excluding descendants











up vote
0
down vote

favorite












Given:

<li>I want this height
<ul>
<li>but not this height</li>
</ul>
</li>

I want to get the height of the first <li> element, excluding the descendant <ul><li>... content.



offsetHeight, clientHeight, scrollHeight etc. all give the height of the entire outer <li>...</li> element.










share|improve this question
























  • Are you using Vanilla JavaScript or jQuery?
    – Samir
    yesterday















up vote
0
down vote

favorite












Given:

<li>I want this height
<ul>
<li>but not this height</li>
</ul>
</li>

I want to get the height of the first <li> element, excluding the descendant <ul><li>... content.



offsetHeight, clientHeight, scrollHeight etc. all give the height of the entire outer <li>...</li> element.










share|improve this question
























  • Are you using Vanilla JavaScript or jQuery?
    – Samir
    yesterday













up vote
0
down vote

favorite









up vote
0
down vote

favorite











Given:

<li>I want this height
<ul>
<li>but not this height</li>
</ul>
</li>

I want to get the height of the first <li> element, excluding the descendant <ul><li>... content.



offsetHeight, clientHeight, scrollHeight etc. all give the height of the entire outer <li>...</li> element.










share|improve this question















Given:

<li>I want this height
<ul>
<li>but not this height</li>
</ul>
</li>

I want to get the height of the first <li> element, excluding the descendant <ul><li>... content.



offsetHeight, clientHeight, scrollHeight etc. all give the height of the entire outer <li>...</li> element.







html height html-lists element






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 10 hours ago

























asked yesterday









nevf

1,27651728




1,27651728












  • Are you using Vanilla JavaScript or jQuery?
    – Samir
    yesterday


















  • Are you using Vanilla JavaScript or jQuery?
    – Samir
    yesterday
















Are you using Vanilla JavaScript or jQuery?
– Samir
yesterday




Are you using Vanilla JavaScript or jQuery?
– Samir
yesterday












1 Answer
1






active

oldest

votes

















up vote
1
down vote













You can extract height of LI and UL separately and then subtract it to get the height of LI only.



Using jQuery library it can be done as,



var liHeight = $('#test > li').outerHeight(); // Get First Li Height

var liUlHeight = $('#test li > ul').outerHeight(); // Get Height of First UL inside Li

var onlyliHeight = liHeight - liUlHeight;

alert('Full LI Height='+liHeight+' -- UL Height='+liUlHeight+' -- Only LI Height='+onlyliHeight);


Working Demo



Using Vanilla JavaScript,



var liHeight = document.querySelector('#test > li').offsetHeight; // Get First Li Height

var liUlHeight = document.querySelector('#test li > ul').offsetHeight; //Get Height of First UL inside Li

var onlyliHeight = liHeight - liUlHeight;

alert('Full LI Height='+liHeight+' -- UL Height='+liUlHeight+' -- Only LI Height='+onlyliHeight);


Working Demo




Output



Full LI Height=42 -- UL Height=22 -- Only LI Height=20







share|improve this answer





















  • Thanks, that would work. That said there could be many nested UL, LI items which would make it a bit more complex and possibly not as performant as one would like. Another option might be to hide the <ul> so it had no height, but I haven't tried that.
    – nevf
    10 hours ago











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














 

draft saved


draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53349240%2fget-li-element-height-excluding-descendants%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
1
down vote













You can extract height of LI and UL separately and then subtract it to get the height of LI only.



Using jQuery library it can be done as,



var liHeight = $('#test > li').outerHeight(); // Get First Li Height

var liUlHeight = $('#test li > ul').outerHeight(); // Get Height of First UL inside Li

var onlyliHeight = liHeight - liUlHeight;

alert('Full LI Height='+liHeight+' -- UL Height='+liUlHeight+' -- Only LI Height='+onlyliHeight);


Working Demo



Using Vanilla JavaScript,



var liHeight = document.querySelector('#test > li').offsetHeight; // Get First Li Height

var liUlHeight = document.querySelector('#test li > ul').offsetHeight; //Get Height of First UL inside Li

var onlyliHeight = liHeight - liUlHeight;

alert('Full LI Height='+liHeight+' -- UL Height='+liUlHeight+' -- Only LI Height='+onlyliHeight);


Working Demo




Output



Full LI Height=42 -- UL Height=22 -- Only LI Height=20







share|improve this answer





















  • Thanks, that would work. That said there could be many nested UL, LI items which would make it a bit more complex and possibly not as performant as one would like. Another option might be to hide the <ul> so it had no height, but I haven't tried that.
    – nevf
    10 hours ago















up vote
1
down vote













You can extract height of LI and UL separately and then subtract it to get the height of LI only.



Using jQuery library it can be done as,



var liHeight = $('#test > li').outerHeight(); // Get First Li Height

var liUlHeight = $('#test li > ul').outerHeight(); // Get Height of First UL inside Li

var onlyliHeight = liHeight - liUlHeight;

alert('Full LI Height='+liHeight+' -- UL Height='+liUlHeight+' -- Only LI Height='+onlyliHeight);


Working Demo



Using Vanilla JavaScript,



var liHeight = document.querySelector('#test > li').offsetHeight; // Get First Li Height

var liUlHeight = document.querySelector('#test li > ul').offsetHeight; //Get Height of First UL inside Li

var onlyliHeight = liHeight - liUlHeight;

alert('Full LI Height='+liHeight+' -- UL Height='+liUlHeight+' -- Only LI Height='+onlyliHeight);


Working Demo




Output



Full LI Height=42 -- UL Height=22 -- Only LI Height=20







share|improve this answer





















  • Thanks, that would work. That said there could be many nested UL, LI items which would make it a bit more complex and possibly not as performant as one would like. Another option might be to hide the <ul> so it had no height, but I haven't tried that.
    – nevf
    10 hours ago













up vote
1
down vote










up vote
1
down vote









You can extract height of LI and UL separately and then subtract it to get the height of LI only.



Using jQuery library it can be done as,



var liHeight = $('#test > li').outerHeight(); // Get First Li Height

var liUlHeight = $('#test li > ul').outerHeight(); // Get Height of First UL inside Li

var onlyliHeight = liHeight - liUlHeight;

alert('Full LI Height='+liHeight+' -- UL Height='+liUlHeight+' -- Only LI Height='+onlyliHeight);


Working Demo



Using Vanilla JavaScript,



var liHeight = document.querySelector('#test > li').offsetHeight; // Get First Li Height

var liUlHeight = document.querySelector('#test li > ul').offsetHeight; //Get Height of First UL inside Li

var onlyliHeight = liHeight - liUlHeight;

alert('Full LI Height='+liHeight+' -- UL Height='+liUlHeight+' -- Only LI Height='+onlyliHeight);


Working Demo




Output



Full LI Height=42 -- UL Height=22 -- Only LI Height=20







share|improve this answer












You can extract height of LI and UL separately and then subtract it to get the height of LI only.



Using jQuery library it can be done as,



var liHeight = $('#test > li').outerHeight(); // Get First Li Height

var liUlHeight = $('#test li > ul').outerHeight(); // Get Height of First UL inside Li

var onlyliHeight = liHeight - liUlHeight;

alert('Full LI Height='+liHeight+' -- UL Height='+liUlHeight+' -- Only LI Height='+onlyliHeight);


Working Demo



Using Vanilla JavaScript,



var liHeight = document.querySelector('#test > li').offsetHeight; // Get First Li Height

var liUlHeight = document.querySelector('#test li > ul').offsetHeight; //Get Height of First UL inside Li

var onlyliHeight = liHeight - liUlHeight;

alert('Full LI Height='+liHeight+' -- UL Height='+liUlHeight+' -- Only LI Height='+onlyliHeight);


Working Demo




Output



Full LI Height=42 -- UL Height=22 -- Only LI Height=20








share|improve this answer












share|improve this answer



share|improve this answer










answered yesterday









Samir

4,8882626




4,8882626












  • Thanks, that would work. That said there could be many nested UL, LI items which would make it a bit more complex and possibly not as performant as one would like. Another option might be to hide the <ul> so it had no height, but I haven't tried that.
    – nevf
    10 hours ago


















  • Thanks, that would work. That said there could be many nested UL, LI items which would make it a bit more complex and possibly not as performant as one would like. Another option might be to hide the <ul> so it had no height, but I haven't tried that.
    – nevf
    10 hours ago
















Thanks, that would work. That said there could be many nested UL, LI items which would make it a bit more complex and possibly not as performant as one would like. Another option might be to hide the <ul> so it had no height, but I haven't tried that.
– nevf
10 hours ago




Thanks, that would work. That said there could be many nested UL, LI items which would make it a bit more complex and possibly not as performant as one would like. Another option might be to hide the <ul> so it had no height, but I haven't tried that.
– nevf
10 hours ago


















 

draft saved


draft discarded



















































 


draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53349240%2fget-li-element-height-excluding-descendants%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Create new schema in PostgreSQL using DBeaver

Deepest pit of an array with Javascript: test on Codility

Costa Masnaga