How to improve the new LUSU website
A D.I.Y. guide for the discerning society Exec. member
- This piece was written over a year ago. It may no longer accurately reflect my views now, or may be factually outdated.
- LUSU commissioned me to refit this piece to, quote,
have less fucks
so they could publicise it. As such, any future updates and discoveries will go on that version.
Gabe: You know what my mom used to say:
When life gives you shit,you just… Uh…
Tycho: Make Shit-ade? What?
Gabe: Wait, it’s coming to me.
So, the new LUSU website. Negativity is all well and good (and jolly cathartic), but what’s the point if you can’t suggest something better? With that in mind, this article will serve as a counterpoint to the other one. Where that article will be updated every time I discover some fresh new hell or minor annoyance on the site, this will be updated when I have a way to work around/break it.
On the society admin dashboard, one is graciously allowed to edit the ‘Description’ box for their society. The editor accepts WYSIWYG entry, or HTML. HTML like <style>
tags. If you want to include these in your own society page, just switch to Source mode:

Then add some <style>
and </style>
tags and copy-paste away!
Note that you’ll want to put your intro line above the <style>
tags, or your society listing will show up like this:
Anyway, here was the old page for LUECS:
As you can see, it looks like pure, unmitigated bum. Here it is after a little bit of tinkering (and liberal use of
!important
CSS rules):
Much better, although there is still plenty to do. If you just want to copy what I’ve done and tinker with it, you can view the whole thing at the bottom by clicking here. In the article between here and there, I’ll go through each change step-by-step.
The world’s most 90s button
First and foremost, this fucker needed to go:
At first I just stuck on a
filter: hue-rotate(225deg);
to shift the inexplicable orange around the colour wheel to the closest I could get to purple, but it looked too bright and still left me with the rest of the button. No, it all had to go:
This was achieved with the following CSS rules (NB: it should go without saying that all of this CSS is bashed out through trial-and-error and thus a horrible mess that is about as CRAPL’d as it can be):
.join-this-group.button-bottom { width: 100% !important; } .join-this-group.button-bottom a { margin: auto !important; background: none !important; text-indent: 0px !important; border-radius: 15px; padding: 8px 20px 8px 20px; text-align: center; color: #551F75; border: 2px solid #551F75; line-height: 40px; text-decoration: none; background-size: 100% 200% !important; background-image: linear-gradient(to bottom, transparent 50%, #551F75 50%) !important; transition: background .5s ease-in-out; } .join-this-group.button-bottom a:hover { background-position: 0 -100% !important; color: #fff; }
First, we make .join-this-group.button-bottom
fullwidth so that we can position .join-this-group.button-bottom a
in the centre of it with margin: auto !important;
. We then purge just about every hint of the original button with the background: none !important;
and bring the original button text back into view with text-indent: 0px !important;
. Lines 8-17 create a far nicer CSS button around the <a>
element, with 15-17 and 20 creating a nice hover-over slide transition. Notably, the button now transitions between LUSU purple (#551f75) and white – there is no fucking turquoise.
Fixing the width
We’re living in a glorious new responsive design future, where people might be viewing a website on a desktop, a phone, a tablet, a phablet, a phesktop, a toaster, a tablone, etc. Central column designs are a holdover from the newspaper days and should be done away with as soon as possible. To do so, add these rules:
.content, .header { width: 90%; } .bottom-union, .top-union, .uc-poweredby-nusdigital-logo { width: 100%; } .uc-poweredby-nusdigital-logo-wrapper { width: 100%; } .union-footer { margin: 0; }
This stretches everything out to fill all of that lovely horizontal screen real estate that’s been ignored.
Hide your shame
This one is more personal preference, but adding a quick
.uc-poweredby-nusdigital-logo { display: none; }
to your rules will hide that ugly NUS logo along the very bottom of the page, because why would you want to tout your affiliation to the world?
Yeah ’cause grey is the most exciting colour right?
That info box on the right bumming you out with it’s grey-on-grey colour scheme? Try this CSS on for size:
.title h1 { background-color: #551F75 !important; } .thumbnail, .group-category, .group_left_panel_menu, .typeCategory { background-color: #EAE5F2 !important; } .tree-navigation li, .tree-navigation li a, .tree-navigation h4 { color: #551F75 !important; } .group-category { padding-bottom: 6px; } .galleryIcon img { border: 2px solid #551F75; }
To start with, we change the colours. I went for LUSU purple for the title bar along the top, and then got the whitened purple from the ‘Your Officers’ bar background (see blow) #EAE5F2 for the rest of the box (and, of course, making the text over it LUSU purple rather than white). Then I stuck a little padding on the bottom, because things were looking a bit too snug there for my liking. Finally, the white of the society logo suddenly giving way to the faded purple of the box looked bad, so I stuck a 2px LUSU purple border around the <img>
tag.
Headings
I liked the look of all the headings being coloured in LUSU purple, rather than black. Simple:
.content-wrap h1, .content-wrap h2, .content-wrap h3, .content-wrap h4, .content-wrap h5, .content-wrap h6 { color: #551F75 !important; }
I then also took the rules from .contentBoxes h2
and applied them to <h2>
s in general so that all your <h2>
headings will look like the default ‘Description’ one at the top of the box:
h2 { background: none; border-bottom: 1px solid #e6e6e6; margin: 1.75% 0% 0%; }
Want to actually show your exec. somewhere?
Okay, this one took some time but it was worth it. Step one was to get the HTML from the ‘Your Officers’ block on the homepage. All 257 lines of it.
What.
Want to know how they managed to make a simple ul
of six li
s stretch to 257 lines?

Unchecking a couple rules later, and:
Like I said in the last article: it really is fractal. Regardless, that bloat clearly need to get trimmed. Luckily for you, I’ve already done it. Here’s the HTML you’ll want to add to your page:
<h2>The Exec.</h2> <div class="section stripe officersdesk" id="officers"> <div class="stripe-wrap" id="officers-wrap"> <div class="stripe-carousel officersdesk" id="officers"> <ul class="jcarousel-skin-tango edit-mode-stripe"> <!-- repeat block for each exec. member --> <li> <span class="thumbnail-image"><img alt="POSITION HERE" src="IMG URL HERE" /></span> <span class="page-details"><span class="page-title">NAME HERE</span><span class="page-summary">POSITION HERE</span></span> </li> <!-- end repeat --> </ul> </div> </div> </div>
Then add the following CSS, amending the width
value for #officers a
with the result of , where
is the number of exec. members you have:
.thumbnail-image img {
height: 160px;
width: 160px;
object-fit: cover;
object-position: 0 50%;
}
#officers a {
width: WIDTH HERE% !important;
float: left;
}
#officers li {
width: 100% !important;
}
#officers {
overflow: hidden !important;
margin-top: 10px;
}
Now for the excruciating part: uploading the images. On the website backend, click the ‘Add Image’ button and then the ‘Upload’ tab:

Upload your photo and wait five years or so for it to finish. Then, click the ‘Image Info’ tab, followed by the ‘Browse Server’ button. Click the image you just uploaded, and then ‘OK’. In the ‘URL’ box will be the URL for your photo – copy it and paste it into your HTML where it says Image URL here
:

Repeat this process, add names and job titles and Bob’s your uncle.
And your social media?
You’d be forgiven for thinking that adding social media links on the backend would cause them to appear on the frontend. Nope, it’s another DIY job. First, the HTML:
<h2>Social Media</h2>
<ul class="social-media">
<!-- repeat block for each social media account -->
<li>
<div class="icon" style="background-image: url('IMG URL HERE');"></div>
</li>
<!-- end repeat -->
</ul>
To style it, we set up the ul
to remove the bullet points, remove its left-margin
so it sits flush with the rest of the page and add an :after
rule that clears the float
rule that we bring in for all its child list elements to make them align horizontally:
.social-media { list-style: none; margin: 10px 0 10px 0 !important; } .social-media:after { content: ''; display: block; clear: both; } .social-media li { float: left; }
Then we just add some styling to the icons themselves, and a nice bevel :hover
effect:
.icon { height: 50px; width: 50px; border-radius: 10px; background-size: cover; background-repeat: no-repeat; background-position: center center; cursor: pointer; margin: 5px 10px 5px 0x; } .icon:hover { -moz-box-shadow: inset 0 0 10px #000000; -webkit-box-shadow: inset 0 0 10px #000000; box-shadow: inset 0 0 10px #000000; }
Full Code
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> <style type="text/css"> .content, .header { width: 90%; } .bottom-union, .top-union, .uc-poweredby-nusdigital-logo { width: 100%; } .uc-poweredby-nusdigital-logo-wrapper { width: 100%; } .union-footer { margin: 0; } .join-this-group.button-bottom { width: 100% !important; } .join-this-group.button-bottom a { margin: auto !important; background: none !important; border-radius: 15px; text-indent: 0px !important; padding: 8px 20px 8px 20px; text-align: center; color: #551F75; border: 2px solid #551F75; line-height: 40px; text-decoration: none; background-size: 100% 200% !important; background-image: linear-gradient(to bottom, transparent 50%, #551F75 50%) !important; transition: background .5s ease-in-out; } .join-this-group.button-bottom a:hover { background-position: 0 -100% !important; color: #fff; } .uc-poweredby-nusdigital-logo { display: none; } .title h1 { background-color: #551F75 !important; } .thumbnail, .group-category, .group_left_panel_menu, .typeCategory { background-color: #EAE5F2 !important; } .tree-navigation li, .tree-navigation li a, .tree-navigation h4 { color: #551F75 !important; } .group-category { padding-bottom: 6px; } .galleryIcon img { border: 2px solid #551F75; } .content-wrap h1, .content-wrap h2, .content-wrap h3, .content-wrap h4, .content-wrap h5, .content-wrap h6 { color: #551F75 !important; } h2 { background: none; border-bottom: 1px solid #e6e6e6; margin: 1.75% 0% 0%; } .thumbnail-image img { height: 160px; width: 160px; object-fit: cover; object-position: 0 0; } #officers a { width: 100% !important; float: left; } #officers li { width: 11% !important; } #officers { overflow: hidden !important; margin-top: 10px; } .social-media { list-style: none; margin: 10px 0 10px 0 !important; } .social-media:after { content: ''; display: block; clear: both; } .social-media li { float: left; } .icon { height: 50px; width: 50px; border-radius: 10px; background-size: cover; background-repeat: no-repeat; background-position: center center; cursor: pointer; margin: 5px 10px 5px 0x; } .icon:hover { -moz-box-shadow: inset 0 0 10px #000000; -webkit-box-shadow: inset 0 0 10px #000000; box-shadow: inset 0 0 10px #000000; } </style> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> <h2 class="subheading">The Exec.</h2> <div class="section stripe officersdesk" id="officers"> <div class="stripe-wrap" id="officers-wrap"> <div class="stripe-carousel officersdesk" id="officers"> <ul class="jcarousel-skin-tango edit-mode-stripe"> <!-- repeat block for each exec. member --> <li> <span class="thumbnail-image"><img alt="POSITION HERE" src="IMG URL HERE" /></span> <span class="page-details"><span class="page-title">NAME HERE</span><span class="page-summary">POSITION HERE</span></span> </li> <!-- end repeat --> </ul> </div> </div> </div> <h2 class="subheading">Social Media</h2> <ul class="social-media"> <!-- repeat block for each social media account --> <li> <div class="icon" style="background-image: url('IMG URL HERE');"></div> </li> <!-- end repeat --> </ul>
Replies