2010-11-19 8 views
9

와이어 프레이밍 중에 웹 애플리케이션이 있지만이 모델을 강화하기 전에 기술적 인 솔루션이 필요한 문제가 발생했습니다. 그 것 :. (. 최대 너비와 DIV)Javascript 또는 Jquery를 사용하여 div 크기를 조정하는 방법을 확인하는 방법

  • 도가 1 사용자는 새로운 "텍스트 필드 ' 요소를 생성 다음 사용자가 타이핑을 시작했다 소자 ...

    시까
  • .도 2 요소는 텍스트 ( 다른 DIV의 형태로) 새로운 라인 및 '새로운'배경 이미지로 떨어진다 그것이 최대 폭의 도달이 (그것 생성 불투명도 및 위치의 효과가 생기도록) 큰 요소를 수용 할 수 있습니다. ze.

UX model concept

이것은 의도 된 기능의 대략적인 개요입니다 (이 순간에 주어진, 난 아직 최대 폭과 사업부처럼 동작 텍스트 필드가하는 방법을 잘 모르겠어요) 하지만 두 번째 단계에 대한 이벤트 처리기를 만드는 방법에 대해 궁금합니다.; 나는 모든 'keydown'이벤트를 확인하는 것에 대해 생각했지만 비효율적 인 것처럼 보입니다 ...

누구에게도 이와 같은 문제를 해결하기위한 조언이나 아이디어가 있습니까? 감사!

+0

+1 용 purty 다이어그램 –

답변

1

MSIE에서는 onresize가 실행됩니다.

+0

아마 Internet Explorer에서 div의 경우 'onresize'가 작동하지만이 방법을 사용할 여유가 없습니다. 전례없이 IE에서만 작동합니다. – jlmakes

+1

그래서 당신은 하나의 브라우저가 당신에게 필요한 것을 정확하게 제공한다는 옵션을 무시하기를 원합니다 (요소들에 onresize)? 기묘한! 제안 된 키 이벤트를 사용하여 작업 할 수 있습니다 (데이터를 잘라내거나 붙여 넣을 경우 실행됩니까?). 치수를 확인하기위한 간격 설정? 인터벌은 피할 수 있다면 결코 좋은 습관이 될 수 없습니다! 다른 많은 솔루션이 있습니다. 내가 MSIE에 게시 한 것. 다른 하나는 gecko와 webkit이 지원하는 DOMSubtreeModified입니다. IE onresize처럼 똑똑하지는 않지만 잘 작동합니다. 바이올린을 확인하십시오 : http://jsfiddle.net/doktormolle/fJmGZ/ –

+0

물론 무례 함! 이 응용 프로그램은 모든 브라우저에서 완벽하게 작동해야하므로 IE 전용 솔루션은 솔직하게 무의미합니다. 귀하의 후속 답변 (및 예) 멋지다! 내가 할 수 있다면 -1을 되 찾을 것입니다 ... 지금은 더 자세히 살펴보고 DOMSubtreeModified에 대해 읽어 봅니다. – jlmakes

3

'keydown'또는 'keyup'이벤트가 가장 먼저 떠오르는 이벤트입니다. 이 방법을 사용하기로 결정한 경우 때마다 html 요소 크기를 확인하고 이전 (변수에 저장) 크기와 비교해야합니다.

가장 쉬운 방법은 핸들러를 html 요소에 바인딩하여 크기가 변경되면 실행되도록하는 것 같습니다. 나는 그런 사건이 있는지 알지 못한다. 그러나 그때가는 길이다.

(당신의 아주 기술적 인 질문에 대한 +1)

+0

+1 +1 ... – davidsleeps

+0

크기 조정이 가능한 텍스트 영역/입력 필드를 얻는 방법은 아직 확실하지 않지만 'keydown/up'접근법은 ... if if 그들은 편지를 누르고 누르고 있습니다 - 그냥 내 모델을 어기 지 않으시겠습니까? – jlmakes

+2

KeyDown에서 JS 간격을 설정하여 입력 길이를 확인하고 크기를 조정합니다. 그런 다음 KeyUp에서 간격을 제거하고 마지막으로 입력을 확인하십시오. 그러면 언론 보도 문제가 해결됩니다. – Brady

2

당신은 CSS3 전환 기능을 사용하여 시도 할 수 :
http://slides.html5rocks.com/#slide42
당신이 원하는 요소가 브라우저 자체에서 애니메이션 할 수있는 방법입니다.

면책 조항 : 분명히 더 복잡한 효과에는 작동하지 않습니다.

+0

꽤 괜찮습니다. Jquery를 사용하여 애니메이션을 만드는 것과 어떻게 다른 점이 있습니까? HTML5로 전환하는 것이 얼마나 편할 지 모르겠다. 이해할 수있는 것부터, 호환성 문제가 다른 완전히 다른 doctype이다. – jlmakes

+0

@JulianDroid - HTML5와 CSS3에 혼란스럽지 않습니다. 별개의 두 가지입니다. CSS3를 사용하기 시작하면 지금 모든 IE 브라우저가 멋진 CSS3를 보지 않을 것입니다. – Brady

+0

모든 가능한 이벤트에 애니메이션 기간을 설정할 수 있다는 점을 제외하면별로 다르지 않습니다. 나는. 캐릭터가 라인의 끝에 도달 할 때를 보지 않아도됩니다. "크기를 조정하려고 할 때 애니메이션으로 처리하십시오."라고 말하면됩니다. – x10

1

최대 너비가 랩핑 될 때까지 입력 필드의 크기가 자동으로 조정되는 너비 문제를 어떻게 공격할지 확실하지 않습니다. 텍스트 필드 내부에 모노 스페이스 글꼴을 사용하여 자바 스크립트를 사용하여 최대 너비를 수평으로 늘려 상자의 성장을 모니터링하고 제어 할 수 있습니다.

높이를 자동으로 높이려면 텍스트 상자를 사용하여 한 줄로 설정하고 입력 상자처럼 보이게 한 다음 텍스트가 자동으로 다음 행으로 바뀌면 더 잘됩니다. 텍스트 영역의 scollHeight를 확인하고 텍스트 영역의 실제 높이를 확인한 다음 빼내면 텍스트 영역을 늘려 수직 스크롤 막대가 나타나지 않게하는 데 필요한 높이를 얻을 수 있습니다.

위의 내용은 자바 스크립트가 마술을하는 동안 잠깐 동안 스크롤 막대를 쓸어 넘기 게합니다. 스크롤 막대를 숨기려면 overflow:auto;을 사용할 수 있지만 scrollHeight가 여전히 올바르게 읽는지 여부는 알 수 없습니다. 실험을해야합니다.

또한 keydown에 간격을 설정하고 반복되는 키 아래쪽 텍스트 문제를 막기 위해 입력 길이를 확인하는 것에 대한 위의 내 의견에 유의하십시오.

+0

그래서 "scrollHeight?" 확장 가능한 텍스트 영역이 컨테이너 크기를 확인하는 것보다 더 힘들다는 것을 알고 있습니다 ... LOL - 두 번째 질문을 시작해야합니다. 텍스트 영역 내에서 줄 높이를 설정 한 다음 줄 높이를 두 배로 수동으로 높이를 변경할 수 없습니까? 이 웹 응용 프로그램은 2 줄 이상을 허용하지 않을 것입니다 ... – jlmakes

+0

가장 넓은 글자를 찾고 '한 줄당 글자 수 제한'과 함께 컨테이너의 너비를 알아야합니다.얼마나 많은 문자가 현재 'keydown'에 입력되어 있는지를 조회하는 방법을 찾으십시오. 그래서 문자 영역의 폭을 "# 문자"x "가장 넓은 문자의 폭"으로 설정할 수 있습니다. – jlmakes

+0

각 키를 누를 때마다 입력 된 문자 수를 확인하여 상자를 수평으로 늘린 다음 최대 너비 중지를 선택하여 확인합니다. 각 키를 누를 때 scrollHeight를 확인하십시오. scrollheight가 텍스트 영역의 실제 높이보다 크면 텍스트가 새 줄로 감싸서 텍스트 영역 행을 확장합니다. – Brady

관련 문제