programing

CSS에서 너비 = 100% - 100%를 어떻게 할 수 있습니까?

topblog 2023. 8. 16. 21:54
반응형

CSS에서 너비 = 100% - 100%를 어떻게 할 수 있습니까?

CSS에서 다음과 같은 작업을 수행하려면 어떻게 해야 합니까?

width: 100% - 100px;

나는 이것이 꽤 간단하다고 생각하지만 그것을 보여주는 예를 찾기가 조금 어렵습니다.

이제 최신 브라우저는 다음을 지원합니다.

width: calc(100% - 100px);

지원되는 브라우저 버전 목록 확인하기: calc()를 CSS 단위 값으로 사용할 수 있습니까?

jQuery 폴백이 있습니다: css width: calc(100% -100px); jQuery를 사용하는 대안.

당신은 디브에게 둥지를 틀 수 있습니까?margin-left: 50px;그리고.margin-right: 50px;내부에<div>와 함께width: 100%;?

이거 한번...

<!--First Solution-->
width: calc(100% - 100px);
<!--Second Solution-->
width: calc(100vh - 100px);

vw: 뷰포트 너비

vh: 뷰포트 높이

제가 모든 공간을 확인해야만 제게 효과가 나타나기 시작했습니다.그래서 이런 식으로 작동하지 않았습니다.width: calc(100%- 20px)또는calc(100%-20px)그리고 완벽하게 함께 일했습니다.width: calc(100% - 20px).

100% - 100px가 되기를 원하는 컨텐츠 div용 컨테이너가 필요합니다.

#container {
   width: 100%
}
#content {
   margin-right:100px;
   width:100%;
}

<div id="container">
  <div id="content">
      Your content here
  </div>
</div>

마지막 직전에 클리어링 디브를 추가해야 할 수도 있습니다.</div>컨텐츠 디비가 넘쳐나는 경우.

<div style="clear:both; height:1px; line-height:0">&nbsp;</div>

내 코드는 IE6에서 작동합니다.

<style>
#container {margin:0 auto; width:100%;}
#header { height:100px; background:#9c6; margin-bottom:5px;}
#mainContent { height:500px; margin-bottom:5px;}
#sidebar { float:left; width:100px; height:500px; background:#cf9;}
#content { margin-left:100px; height:500px; background:#ffa;}

</style>

<div id="container">
  <div id="header">header</div>
  <div id="mainContent">
    <div id="sidebar">left</div>
    <div id="content">right 100% - 100px</div>
  <span style="display:none"></span></div>
</div>

enter image description here

본체 여백을 0으로 설정하고, 외부 용기의 폭을 100%로 설정하고, 좌우 여백이 50px인 내부 용기를 사용하는 것이 효과가 있을 것 같습니다.

<style>
body {
    margin: 0;
    padding: 0;
}

.full-width
{
    width: 100%;
}

.innerContainer
{
    margin: 0px 50px 0px 50px;
}
</style>

<body>
  <div class="full-width" style="background-color: #ff0000;">
    <div class="innerContainer" style="background-color: #00ff00;">
      content here
    </div>
  </div>
</body>

부트스트랩 패널로 작업하면서, 저는 긴 이웃 요소에 의해 가려지지 않는 헤더 패널에 "삭제" 링크를 배치하는 방법을 찾고 있었습니다.해결책은 다음과 같습니다.

html:

<div class="with-right-link">
    <a class="left-link" href="#">Long link header Long link header</a>
    <a class="right-link" href="#">Delete</a>
</div>

CSS:

.with-right-link { position: relative; width: 275px; }
a.left-link { display: inline-block; margin-right: 100px; }
a.right-link { position: absolute; top: 0; right: 0; }

물론 들여쓰기에 따라 "상위" 및 "오른쪽" 값을 수정할 수 있습니다.출처

할 수 있습니까:

margin-right: 50px;
margin-left: 50px;

편집: 내 해결책이 틀렸습니다.Aric TenYeck가 100% 너비의 div를 사용한 다음 여백을 사용하여 다른 div를 내포할 것을 제안하는 솔루션이 더 정확해 보입니다.

바깥쪽 디브에 패딩을 입히면 원하는 효과를 얻을 수 있습니다.

<html>
<head>
<style>
    #outer{
        padding: 0 50px;
        border:1px solid black; /*for visualization*/
    }

    #inner{
        border:1px solid red; /*for visualization*/
    }
</style>
</head>
<body>
<div id="outer">
    <div id="inner">
        100px smaller than outer
    </div>
</div>
</body>
</html>

이 일반적인 시나리오에서 유용하게 사용할 수 있는 두 가지 기술은 다음과 같습니다.각각의 단점이 있지만 둘 다 유용할 수 있습니다.

box-bound: border-box에는 항목 너비의 패딩 및 테두리 너비가 포함됩니다.예를 들어 20px 20px 패딩과 1px 테두리를 사용하는 div 너비를 100px로 설정하면 실제 너비는 142px가 되지만 테두리 상자를 사용하는 경우 패딩과 여백이 모두 100px 안에 있습니다.

.bb{
    -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
    -moz-box-sizing: border-box;    /* Firefox, other Gecko */
    box-sizing: border-box;     
    width: 100%;
    height:200px;
    padding: 50px;
}

여기 그것에 대한 훌륭한 기사가 있습니다: http://css-tricks.com/box-sizing/ 그리고 여기 fidle http://jsfiddle.net/L3Rvw/ .

그리고 거기에는 절대적인 입장이 있습니다.

.padded{
    position: absolute;
    top: 50px;
    right: 50px;
    left: 50px;
    bottom: 50px;
    background-color: #aefebc;
}

http://jsfiddle.net/Mw9CT/1/

물론 둘 다 완벽하지는 않습니다. 상자 크기 조정은 요소가 실제로 100% - 100px가 아닌 100% 너비이기 때문에 질문에 정확하게 맞지 않습니다(자녀 div는 어떻든).그리고 절대 위치 결정은 모든 상황에서 확실히 사용될 수는 없지만, 보통 부모의 높이가 설정되어 있는 한 괜찮습니다.

표준 모드를 사용하고 있습니까?이 해결책은 그것에 달려 있다고 생각합니다.

두 개의 열을 만들려는 경우 다음과 같은 작업을 수행할 수 있습니다.

<div id="outer">
    <div id="left">
        sidebar
    </div>
    <div id="main">
        lorem ispsum etc... 
    </div>
</div>

그런 다음 CSS를 사용하여 스타일을 지정합니다.

div#outer
{
    width:100%;
    height: 500px;
}

div#left
{
    width: 100px;
    height: 100%;
    float:left;
    background: green;
}

div#main
{
   width: auto;
   margin-left: 100px; /* same as div#left width */
   height: 100%;
   background:red;
}

두, 두개열원않제으수있다습니거할면하지를 제거할 수 .<div id="left">

<div style="width: 200px; border: 1px solid red;">
    <br>
    <div style="margin: 0px 50px 0px 50px; border: 1px solid blue;">
        <br>
    </div>
    <br>
</div>

CSS에 논리와 변수를 포함할 수 있도록 CSS를 사전 처리하는 자바스크립트 파일인 LESS를 사용하는 것을 검토할 수 있습니다.그래서 예를 들어, 당신은 LESS로 적을 것입니다.width: 100% - 100px;원했던 달성하기 :) 신이원했당것을정달위해성기하히확 :)

CSS는 애니메이션이나 이벤트의 스타일 수정에 사용할 수 없습니다.

유일한 방법은 자바스크립트 함수를 사용하는 것입니다. 자바스크립트 함수는 주어진 요소의 너비를 반환한 다음, 여기서 100px를 빼고 새로운 너비 크기를 설정합니다.

jQuery를 사용한다고 가정하면 다음과 같은 작업을 수행할 수 있습니다.

oldWidth = $('#yourElem').width();
$('#yourElem').width(oldWidth-100);

네이티브 Javascript를 사용하면 다음과 같습니다.

oldWidth = document.getElementById('yourElem').clientWidth;
document.getElementById('yourElem').style.width = oldWidth-100+'px';

우리는 당신이 100%의 CSS 스타일 세트를 가지고 있다고 가정합니다;

효과:

margin-right:100px;
width:auto;

그럴수는 없어요.

그러나 여백을 사용하여 동일한 결과를 적용할 수 있습니다.

간단한 대답은 CSS에서는 이것을 하지 않는다는 것입니다.Internet Explorer는 CSS Expressions라는 것을 지원하지만 이는 표준이 아니며 FireFox와 같은 다른 브라우저에서 지원되지 않습니다.

자바스크립트로 이것을 하는 것이 더 나을 것입니다.

언급URL : https://stackoverflow.com/questions/899107/how-can-i-do-width-100-100px-in-css

반응형