整个视口上的角度元素

时间:2017-05-30 15:10:18

标签: html5 css3

您如何实现3个元素的角度布局?你会使用哪种技术?帆布?转变?扭曲?仅JS或CSS?它必须以某种方式响应:)

我尝试了不同的方法,但我不确定。这是一个:



/* ======================================================== */
/*	'resize window' event handler
/* ======================================================== */

var addEvent = function(object, type, callback) {
    if (object == null || typeof(object) == 'undefined') return;
    if (object.addEventListener) {
        object.addEventListener(type, callback, false);
    } else if (object.attachEvent) {
        object.attachEvent('on' + type, callback);
    } else {
        object['on' + type] = callback;
    }
};

addEvent(window, 'resize', function(event) {
    setSliceSize();
    consoleLog();
});

/* ======================================================== */
/*	get window width
/* ======================================================== */

function getWidth() {
    if (self.innerWidth) {
        return self.innerWidth;
    }

    if (document.documentElement && document.documentElement.clientWidth) {
        return document.documentElement.clientWidth;
    }

    if (document.body) {
        return document.body.clientWidth;
    }
}

/* ======================================================== */
/*	get window height
/* ======================================================== */

function getHeight() {
    if (self.innerHeight) {
        return self.innerHeight;
    }

    if (document.documentElement && document.documentElement.clientHeight) {
        return document.documentElement.clientHeight;
    }

    if (document.body) {
        return document.body.clientHeight;
    }
}

/* ======================================================== */
/*	get window square root 
/* ======================================================== */

function getSquareRoot() {
	return Math.sqrt((Math.pow(getWidth(), 2)) + (Math.pow(getHeight(), 2)) );
}

/* ======================================================== */
/*	set dimensions of squares
/* ======================================================== */

function setSliceSize() {
	var slices = document.getElementsByClassName('slice');
	for (var i = 0; i < slices.length; i++) {
		slices[i].style.width = getSquareRoot() + 'px';
		slices[i].style.height = getSquareRoot() + 'px';
	}

	var rotator = document.getElementById('rotator');
	rotator.style.width = getSquareRoot() * 2 + 'px';
	rotator.style.height = getSquareRoot() * 2 + 'px';
	rotator.style.marginLeft = - getSquareRoot() + 'px';
	rotator.style.marginTop = - getSquareRoot() + 'px';
}

function deg45() {

}

function consoleLog() {
	console.log(getWidth()); console.log(getHeight());
	console.log(getSquareRoot());
}

window.onload = function(){
	setSliceSize();
	consoleLog();
}
&#13;
* {
	margin: 0;
	padding: 0;
}

html, body {
	width: 100%;
	height: 100%;
}

.clearfix:after {
    content: "";
    display: table;
    clear: both;
}

.wrap {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}

/* ======================================================== */
/*  rotator & slices
/* ======================================================== */

#rotator {
    position: absolute;
    left: 50%;
    top: 30%;
    transform: rotate(45deg);
}

.slice {
    position: relative;
}

#first-third {
    background: red;
    margin-top: 30%;
    float: left;
}

#second-third {
    background: green;
    float: right;
}

#third-third {
    background: blue;
    float: right;
}

/* ======================================================== */
/*  ...
/* ======================================================== */
&#13;
<!DOCTYPE html>
<html>

<head>
    <title>x</title>
    <link rel=stylesheet href="styles.css">
    <script src="main.js"></script>
</head>

<body>
	<div class="wrap">
		<div id="rotator">
		    <div id="first-third" class="slice"></div>
			<div id="second-third" class="slice"></div>
			<div id="third-third" class="slice"></div>
			<div class="clearfix"></div>
		</div>
	</div>
</body>

</html>
&#13;
&#13;
&#13;

这是一个很好的解决方案吗?

谢谢;)

0 个答案:

没有答案