본문 바로가기

웹언어/CSS3

[CSS3강좌] 31강 CSS outline속성 - 오쌤의 니가스터디

728x90
반응형

 

 

 

 

 

 

 

 

** 영상으로 보고 싶은 분은 아래 주소를 클릭하세요!

https://www.youtube.com/watch?v=TaXDcQFAOkw 

 

 

 

 

 

 

 

 

1. outline 속성이란?

- outline(윤곽선)은 요소를 눈에 띄게 하기 위해 테두리(border)의 바깥쪽에 그려지는 선입니다.

출처 : https://www.w3schools.com/css/css_outline.asp

- 위의 그림을 보면 border보다도 바깥쪽으로 처리되는 것을 그림으로 확인하실 수 있습니다.

- 보통은 일단 요소들에는 주지 않고 초점을 받는 태그인 [a, input, button, select, textarea]에 줍니다.

 

 

 

 

 

 

 

 

1) 속성의 종류

속성 설명
outline-style outline(윤곽선)의 스타일을 지정합니다. 
outline-color outline(윤곽선)의 색상을 지정합니다.
outline-width outline(윤곽선)의 굵기를 지정합니다. 
outline-offset outline(윤곽선)과 border(테두리)사이의 공간을 추가합니다. 
outline outline(윤곽선)의 속기법입니다. 뒤의 영문들을 작성하지 않아도 값만 작성해도 적용됩니다.

 

 

 

 

 

 

 

 

 

 

 

2) outline-style

속성값 설명
dotted outline(윤곽선)의 짧은 점선 스타일을 지정합니다. 
dashed outline(윤곽선)의 긴 점선 스타일을 지정합니다. 
solid outline(윤곽선)의 실선 스타일을 지정합니다. 
double outline(윤곽선)의 두줄 스타일을 지정합니다. 
groove outline(윤곽선)의 3D적 그루브한 스타일로 약간 파인듯한 느낌을 줍니다.
ridge outline(윤곽선)의 3D적 능선스타일로 약간 튀어나온듯한 느낌을 줍니다.
inset outline(윤곽선)의 테두리가 안쪽으로 그림자 주는 효과를 줍니다.
outset outline(윤곽선)의 테두리가 바깥쪽으로 그림자 주는 효과를 줍니다.
none outline(윤곽선) 없앱니다.
hidden outline(윤곽선) 숨깁니다.

 

 

## 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS3 outline</title>
        <style>
            p{ 
                border: 3px solid black; padding: 10px;
                text-transform: capitalize; font-weight: bold;
                
                outline-color: red; /* outline 색상 */
            }
            
            p.dotted {outline-style: dotted;}
            p.dashed {outline-style: dashed;}
            p.solid {outline-style: solid;}
            p.double {outline-style: double;}
            p.groove {outline-style: groove;}
            p.ridge {outline-style: ridge;}
            p.inset {outline-style: inset;}
            p.outset {outline-style: outset;}
        </style>
    </head>
    <body>
        <p class="dotted">dotted outline</p>
        <p class="dashed">dashed outline</p>
        <p class="solid">solid outline</p>
        <p class="double">double outline</p>
        <p class="groove">groove outline</p>
        <p class="ridge">ridge outline</p>
        <p class="inset">inset outline</p>
        <p class="outset">outset outline</p>
    </body>
</html>

 

 

 

## 결과

- 검은색으로 준 border 바깥쪽에 테두리가 또 생기는 것을 확인할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

3) outline-width

속성값 설명
thin outline(윤곽선)의 얇은 선을 의미하고 일반적으로는 1px입니다.
medium outline(윤곽선)의 중간 선을 의미하고 일반적으로는 3px입니다.
thick outline(윤곽선)의 굵은 선을 의미하고 일반적으로는 5px입니다.
단위 px, pt, cm, em 등의 단위로 설정합니다.

 

 

 

 

 

 

 

 

 

 

 

3) outline-color

속성값 설명 예시
영문색상 색상값을 영문으로 작성합니다.  outline-color: red;
HEX코드 색상값을 hex코드로 작성합니다.  outline-color: #FF0000;
RGB함수 색상값을 rgb함수를 사용하여 작성합니다.  outline-color: rgb(255,0,0);
HSL함수 색상값을 hsl함수를 사용하여 작성합니다.  outline-color: hsl(0,100%,50%);
invert 아웃라인색의 기본값인 검정색으로 설정 outline-color: invert;

 

 

## 코드 - invert와 hex코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS3 outline</title>
        <style>
            p{ 
                border: 3px solid red; padding: 10px;
                text-transform: capitalize; font-weight: bold;
                
                outline-style: solid;
                outline-color: invert;
            }
            p:last-child{ outline-color: blue; }
        </style>
    </head>
    <body>
        <p>invert outline</p>
        <p>convert outline</p>
    </body>
</html>

 

 

## 결과

 

 

 

 

 

 

 

 

 

 

 

 

 

4) outline속기법

- outline-width, outline-style, outline-color의 값을 한 번에 작성하는 방법입니다.

 

## 문법

p.ex1{ outline: dashed; }
p.ex2{ outline: dotted red; }
p.ex3{ outline: 5px solid yellow; }
p.ex4{ outline: thick ridge pink; }

- 위에 보이는 것과 같이 섞어서 사용이 가능합니다.

 

 

 

 

 

 

 

 

 

 

 

5) outline-offset

- 테두리와 윤곽선 사이에 공간을 추가합니다. 이때 공간은 투명합니다.

 

 

## 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS3 outline</title>
        <style>
            p{ 
                margin: 50px;
                border: 3px solid red; padding: 10px;
                text-transform: capitalize; font-weight: bold;
                
                outline: 3px solid blue;
                outline-offset: 15px;
            }
            p:last-child{ background: yellow; }
        </style>
    </head>
    <body>
        <p>outline</p>
        <p>outline</p>
    </body>
</html>

- 요소에 마진(margin)이 있어야 outline이 들어갈 공간을 형성합니다.

 

 

 

## 결과

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 크롬 초점 검정 테두리 없애기

- 2020년 중반 전까지는 크롬이 초점을 받으면 파란색을 띠는 아웃라인을 처리했습니다. 

- 2002년 중반 후부터는 검은색 테두리로 처리되면서 웹코딩이나 디자인 시 조금 불편함이 있네요.

 

 

## 초점 생기는 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS3 outline</title>
        <style>
            
        </style>
    </head>
    <body>
        <a href="#">링크태그</a>
        <hr>
        <button>버튼</button>
        <hr>
        <input type="text">
        <hr>
        <select>
            <option>옵션01</option>
            <option>옵션02</option>
        </select>
        <hr>
        <textarea cols="30" rows="10"></textarea>
    </body>
</html>

 

 

 

##  결과

- 주소표시줄에서 클릭 후 [tab] 키를 누르면 위에 보이는 태그들은 초점을 받는 것을 확인할 수 있습니다.

- 이때 초점이 검은색으로 처리가 됩니다.

- 특히 클릭이벤트를 받을 때도 초점을 받기 때문에 활성화 상태와 헷갈릴 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

1) 코딩으로 outline(윤곽선) 없애기

## 문법

outline: none; 

 

 

## 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS3 outline</title>
        <style>
            *:focus{ outline: none; }
        </style>
    </head>
    <body>
        <a href="#">링크태그</a>
        <hr>
        <button>버튼</button>
        <hr>
        <input type="text">
        <hr>
        <select>
            <option>옵션01</option>
            <option>옵션02</option>
        </select>
        <hr>
        <textarea cols="30" rows="10"></textarea>
    </body>
</html>

 

 

## 결과

- 버튼 아래 input 태그에 초점을 받아 커서가 가있지만 테두리가 없는 것을 확인할 수 있습니다.

- 하지만 저렇게 설정하면 초점(tab키)으로 홈페이지를 확인하시는 분들에게는 좋지 못해 웹 접근성이 떨어집니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2) 코딩으로 outline(윤곽선) 색상 변경하기

## 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>CSS3 outline</title>
        <style>
            *:focus{ outline-color: rgba(20,180,180,0.5); }
        </style>
    </head>
    <body>
        <a href="#">링크태그</a>
        <hr>
        <button>버튼</button>
        <hr>
        <input type="text">
        <hr>
        <select>
            <option>옵션01</option>
            <option>옵션02</option>
        </select>
        <hr>
        <textarea cols="30" rows="10"></textarea>
    </body>
</html>

 

 

## 결과

 

 

 

 

 

 

 

 

 

 

 

 

 

3) 크롬 설정에서 예전 파란색으로 돌리기

- 검색창에 아래 코드를 복사해서 쳐주세요.

chrome://flags 

 

- 이런 식으로 주소창에 쳐주시면 됩니다.

 

 

 

- 검색창에서 아래 코드를 검색해주세요.

 #form-controls-refresh

- 그럼 아래쪽에 [Web Platform Controls updated UI]라고 검색되는 것이 확인될 것입니다.

 

 

 

 

- [Default]라고 되어 있는 선택 상자를 눌러서 [disabled]로 교체해줍니다.

 

 

 

- 그럼 하단에 뜨는 [Relaunch]라는 버튼을 눌러 크롬을 재설정하고 크롬을 재실행해주세요.

- 하단에 보이는 파란색 박스입니다.

 

 

 

- 다시 실행 후 초점 받는 곳을 선택하면 다시 파란색으로 변경되는 것을 확인할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형