Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URLs added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Auto Save

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                <h2>Click to the characters! :) </h2>

<div class="compass">
	<div class="container">
		<div class="item" data-id="7"><a href="#">C</a><span></span></div>
		<div class="item" data-id="0"><a href="#">O</a><span></span></div>
		<div class="item" data-id="1"><a href="#">M</a><span></span></div>
		<div class="item" data-id="2"><a href="#">P</a><span></span></div>
		<div class="item" data-id="3"><a href="#">A</a><span></span></div>
		<div class="item" data-id="4"><a href="#">S</a><span></span></div>
		<div class="item" data-id="5"><a href="#">S</a><span></span></div>
		<div class="item" data-id="6"><a href="#"></a><span></span></div>
	</div>
	
	<div class="arrow">
		<div class="top"></div>
		<div class="bottom"></div>
	</div>
</div>

<div class="content-container">
	<div class="items">
		<div class="content-item" data-id="7">
			<div class="item-header">
				<h2>Creative</h2>
				<p class="lead">Meaning: challenging, visionary, focus on change, context and community</p>
			</div>
			<div class="desc">
				<p>Think outside the box! Keep your institution‘s culture, processes and values in mind, but dare to be creative, invite new ways of thinking!</p>
			</div>
		</div>
		<div class="content-item" data-id="0">
			<div class="item-header">
				<h2>Open</h2>
				<p class="lead">Meaning: transparent, participatory, diverse, engagingand with ownership</p>
			</div>
			<div class="desc">
				<p>Make your processes transparent, open and participatory. When allowing differing views, ideas and stakeholders from various backgrounds and organizational responsibility, structural changes are more likely to be realized.</p>
			</div>
		</div>
		<div class="content-item" data-id="1">
			<div class="item-header">
				<h2>Mitigating</h2>
				<p class="lead">Meaning: non-discriminatory, mindful, meaningful and aware of biases</p>
			</div>
			<div class="desc">
				<p>Be aware of biases and stereotypes. Keep in mind and check new measures or planned actions against intersecting factors.</p>
			</div>
		</div>
		<div class="content-item" data-id="2">
			<div class="item-header">
				<h2>Processual</h2>
				<p class="lead">Meaning: focused on processes, practice and practioners</p>
			</div>
			<div class="desc">
				<p>Focus your measures on processes and practitioners. Take into account relevant process stakeholders, create interconnections and synergies. Facilitate structure and process rather than content.</p>
			</div>
		</div>
		<div class="content-item" data-id="3">
			<div class="item-header">
				<h2>Accountable</h2>
				<p class="lead">Meaning: fair, equal, responsible, responsive, supportive and systematic</p>
			</div>
			<div class="desc">
				<p>Set and follow codes of responsible and ethical conduct. Monitor and report on progress. Favour systematic approaches, clarify where responsibility lies and engage from there.</p>
			</div>
		</div>
		<div class="content-item" data-id="4">
			<div class="item-header">
				<h2>SMART</h2>
			</div>
			<div class="item-long-content">
				<div class="desc">
					<p>Specific</p>
				</div>
				<div class="longdesc">
					<p>The objectives and measures should answer to basic questions: what, why, how, who, when and where.</p>
				</div>

				<div class="desc">
					<p>Measurable</p>
				</div>
				<div class="longdesc">
					<p>Establish quantitative and/or qualitative indicators and respective targets.</p>
				</div>

				<div class="desc">
					<p>Achievable</p>
				</div>
				<div class="longdesc">
					<p>Make sure the objectives and measures are within reach and that they can be achieved (even if requiring more effort).</p>
				</div>

				<div class="desc">
					<p>Result-oriented</p>
				</div>
				<div class="longdesc">
					<p>Objectives should measure outcomes, not activities.</p>
				</div>

				<div class="desc">
					<p>Time-bound</p>
				</div>
				<div class="longdesc">
					<p>Indicate when the objectives and measures can or are expected to be achieved.</p>
				</div>
			</div>
		</div>
		<div class="content-item" data-id="5">
			<div class="item-header">
				<h2>Sustainable</h2>
				<p class="lead">Meaning: replicable, continuous, systemic, structured, (self)generative</p>
			</div>
			<div class="desc">
				<p>Ideally, your measures and actions are not just short-lived, but replicable, continuous and (self)generative. Focus on ways to systemically anchoring and embed your measures.</p>
			</div>
		</div>
	</div>
</div>
              
            
!

CSS

              
                body {
	display: grid;
	min-height: 100vh;
	align-content: start;
	padding: 60px;
	justify-content: center;
	justify-items: center;
	font-family: sans-serif;
	
	*,
	*:after,
	*:before {
		box-sizing: border-box;
	}
}

h2 {
	font-size: 25px;
	margin-bottom: 25px;
}

@compassWidth: 400px;
@characterWidth: 30px;


@primary: #26225D;
@gray: #EBECED;
@darkGray: #CECECE;
@primaryLight: #B9B8DB;

@secondary: #57BDBE;
@secondaryLight: #C3C2E0;
@borderWidth: 15px;


.compass {
	position: relative;
	display: grid;
	align-items: center;
	justify-items: center;
    border-radius: 50%;
	
	&:before {
		position: absolute;
		content: '';
		display: inline-block;
		width: 0;
		height: 0;
		top: @borderWidth;
		left: 50%;
		border-style: solid;
		border-width: 24px 12px 0 12px;
		border-color: @primary transparent transparent transparent;
		transform: translateX(-50%);
		transition: bottom 1s linear;
		z-index: 1;
	}
	
	&:after {
		position: absolute;
		content: '';
		display: inline-block;
		width: 20px;
		height: 20px;
		background: #fff;
		border-radius: 50%;
		z-index: 10;
	}
	
	&:hover {
		.arrow {
			animation: .25s ease-in arrow infinite;
		}
		
		.item a {
			animation: 1s linear pulse;
		}
	}
	
	.arrow {
		position: absolute;
		width: 65%;
		height: 65%;
		display: grid;
		justify-items: center;
		border-radius: 50%;
		
		.top {
			position: relative;
			
			&:before,
			&:after {
				position: absolute;
				display: block;
				top: 0;
				content: '';
				width: 0;
				height: 0;
			}
			
			&:after {
				border-style: solid;
				border-width: 0 23px @compassWidth * .325 0;
				border-color: transparent transparent darken(@secondary, 20%) transparent;
				
			}
			&:before {
				right: 100%;
				border-style: solid;
				border-width: 0 0 @compassWidth * .325 23px;
				border-color: transparent transparent @secondary transparent;
			}
		}
		.bottom {
			position: relative;
			
			&:before,
			&:after {
				position: absolute;
				content: '';
				bottom: 0;
				width: 0;
				height: 0;
			}
			
			&:after {
				border-style: solid;
				border-width: @compassWidth * .325 23px 0 0;
				border-color:  darken(@secondary, 27%) transparent transparent transparent;
				
			}
			&:before {
				right: 100%;
				border-style: solid;
				border-width: @compassWidth * .325 0 0 23px;
				border-color:  darken(@secondary, 20%) transparent transparent transparent;
			}
		}
	}
}
.container {
	width: @compassWidth;
	height: @compassWidth;
	position: relative;
	display: grid;
	align-items: center;
	justify-items: center;
	transition: all 1s linear;
	border: @borderWidth solid @primary;
	background: #fff;
    border-radius: 50%;
	
	&:before {
		position: absolute;
		content: '';
		border-radius: 50%;
		width: 100%;
    	height: 100%;
		background-color: transparent;
		border: @borderWidth solid @gray;
	}
	
	
	
	.item {
		width: @characterWidth;
		height: @characterWidth;
		position: absolute;
		display: grid;
		align-content: start;
		justify-content: center;
		justify-items: center;
		padding-bottom: @compassWidth - (@characterWidth * 2 + @borderWidth * 5);
		transform: rotate(0deg);
		transition: all 1s linear;
	}
	
	a {
		display: inline-flex;
	
		justify-content: center;
		align-items: center;
		width: @characterWidth;
		height: @characterWidth;
		margin-top: @characterWidth * -1;
		transform: rotate(0deg);
		transition: transform 1s linear;
		color: @secondary;
		font-size: @characterWidth;
		font-weight: bold;
		text-decoration: none;
		text-shadow: 1px 1px 2px #fff, -1px -1px 2px #fff;
		
	}
	
	span {
		display: inline-block;
		width: 0;
		transition: all 1s linear;
		margin-top: @characterWidth;
		border-width: 0 10px (@compassWidth / 2) - (@characterWidth * 2 + @borderWidth * 2 ) 10px;
		border-color: transparent transparent @darkGray transparent;
		border-style: solid;
	}
}

.content-container {
	position: relative;
	padding: 60px 0;
	width: 100%;
	
	.items {
		//position: absolute;
	
		width: 500px;
		height: 100%;
		left: 50%;
	}
	.content-item {
		visibility: hidden;
		width: 100%;
		height: 0;
		left: 0;
		top: 0;
		transition: left 1s linear, opacity 1s linear;
		
		&.active {
			visibility: visible;
			width: 100%;
			height: 100%;
			
			.item-header:before {
				bottom: 100%;
			}
		}
		
		p {
				line-height: 1.4;
		}
		
		.item-header {
			position: relative;
			background: @primary;
			color: #fff;
			padding: 20px;
			text-align: center;
			margin-bottom: 30px;
			
			&:before {
				position: absolute;
				content: '';
				display: inline-block;
				width: 0;
				height: 0;
				bottom: bottom: 100%;;
				border-style: solid;
				border-width: 0 25px 25px 25px;
				border-color: transparent transparent @primary transparent;
				transform: translateX(-50%);
				transition: bottom 1s linear;
				z-index: -1;
			}
			
			h2 {
				font-size: 24px;
			}
			
			p {
				padding-top: 20px;
			}
		}
		
		.desc {
			background: @primaryLight;
			color: #fff;
			padding: 20px;
			text-align: center;
			border: 1px solid @primary;
			position: relative;
			
			&:after {
				position: absolute;
				content: '';
				display: inline-block;
				bottom: 100%;
				width: 2px;
				height: 50px;
				background: @primaryLight;
				z-index: -1;
			}
		}
		
		.item-long-content {
			display: grid;
			grid-template-columns: 152px 1fr;
			align-content: center;
			grid-gap: 20px;
			
			.desc {
				display: grid;
				align-content: center;
				justify-content: center;
				justify-items: center;
				align-items: center;
				
				&:before {
				position: absolute;
				content: '';
				display: inline-block;
				left: 100%;
				width: 50px;
				height: 2px;
				background: @primaryLight;
				z-index: -1;
				}
			}
			
			.longdesc {
				background: #fff;
				padding: 10px;
				border: 1px solid @primary;
			}
		}
	}
}

@keyframes arrow {
    0% {
        font-size: rotate(-0.5deg);
    }
	50% {
        transform: rotate(0.5deg);
    }
	100% {
		transform: rotate(-0.5deg);
	}
}


              
            
!

JS

              
                let $container = $('.container');
let $items = $('.container .item');
let $characters = $('.container .item a');
let $contentItems = $('.content-container .content-item');

$.each( $items , function( index, item ) {
	let id = $(item).data("id");
	
	$(item).attr('style', 'transform: rotate(' + id * 45 + 'deg)');
	$(item).children('a').attr('style', 'transform: rotate(' + (id * 45) * -1 + 'deg)');
});

$characters.on('click', function(e) {
	e.preventDefault();
	
	$items.removeClass('active');
	$contentItems.removeClass('active');
	let transform = 0;
	
	let id = $(e.target).parent().data("id")
	transform = 180 - (id * 45);
	$(e.target).parent().addClass('active');
	
	$container.attr('style', 'transform: rotate(' + transform + 'deg)');
	
	$.each($items, function (index, item) {
		let itemId = $(item).data("id");
		
		$(item).children('a').removeAttr("style");
		$(item).children('a').attr('style', 'transform: rotate(' + ( ((itemId + (4 - id)) * 45) * -1)  + 'deg)');
	})
	
	$.each($contentItems, function (index, item) {
		
		if ($(item).data("id") == id) {
			$(item).addClass('active');
		}
	})
});




              
            
!
999px

Console