BEM denkwijze

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior/medior PHP developer Onderwijssector

Functie Momenteel zijn ze op zoek naar een developer die, veelal fullstack, mee gaat werken aan de ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js

Bekijk vacature »

Medior Front-end Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte websites die in eigen beheer zijn. In onze vestiging in Nederweert zit onze development afdeling en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé Medior Front-end Developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het uitwerken van designs tot functionele layouts Je

Bekijk vacature »

Mendix Developer

Functie Wat ga je doen als Mendix Developer? We leven in een wereld die snel ontwikkelt en veranderd, ook nemen bedrijfsbelangen toe en blijken risico’s moeilijker in te schatten, daarom wij op zoek naar Junior, Medior en Senior Developers die bedrijven kunnen helpen met hun screeningproces en zorgen dat deze efficiënt en 100 procent AVG compliant is. Het concept achter Mendix is duidelijk. De klant heeft een vraag/probleem. Dit kunnen we door middel van slimme software oplossen. In plaats van te werken met de nieuwste technieken en tools, wordt er gekozen voor het implementeren en maken van software dat op

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

Bekijk vacature »

Intern - Junior PHP ontwikkelaar in fris en jong t

Bedrijfsomschrijving Werk jij graag een in fris, flexibel en jong team? Bij ons ben jij vrij om te bepalen waar jij het liefst werkt en op de vrijdag komen wij gezellig bij elkaar op kantoor. Flexibiliteit en vrijheid zijn bij ons de norm en dat geeft jou de ruimte en energie om het beste uit jezelf te halen! Ons team bestaat uit vijf enthousiaste collega's die jou graag ondersteunen in zowel je persoonlijke als professionele ontwikkeling. Met twee ervaren Senior Developers als mentoren ben jij in goede handen. Wij zien onszelf als een vriendengroep die gezamenlijk werken aan iets moois

Bekijk vacature »

Senior Software developer PHP

Functie Jij als senior PHP ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 developers binnen onze organisatie Jij gaat de brug zijn tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je je taken op voor de dag. Een greep van jouw taken zijn: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden met Security & Privacy Eisen • Minimaal 4

Bekijk vacature »

Back-end developer (Magento2)

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Java Front-end Developer

Dit ga je doen Ontwikkelen van nieuwe functionaliteiten in Java met tools als Springboot, MS SQL Server (T-SQL) en JavaScript; Het onderhouden van de (web-)applicaties binnen een complexe omgeving; Werken aan de migratie van een monolithisch systeem naar een architectuur gebaseerd op Kubernetes; Code reviews met collega's en actieve kennisuitdelingsessies voeren; Het uitvoeren van unit- en systeemtests Experimenteren met nieuwe tools en technieken. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Als junior .NET Developer lever je met jouw oplossingen direct een bijdrage aan de bedrijfsprocessen van de klanten. Werkzaamheden waar jij je zoal mee bezig houdt zijn; Het ontwikkelen, onderhouden en optimaliseren van de draaiende platforms van de klanten; Softwareontwikkeling middels C#, .NET; Klantcontact om de wensen te bespreken en uit te werken; Optimaliseren van de (huidige) bedrijfsprocessen; De IT-afdeling bestaat uit 30 personen verdeeld over 3 teams. Het team waar je in terecht komt bestaat uit ongeveer tien man. Het is een team wat bestaat uit betrokken collega’s, waar iedereen bereidt is om elkaar te

Bekijk vacature »

Product Developer (M/F), Fulltime 40 h/week

A global Plantbased revolution – that is our dream. Maximising the protein transition – that is our mission. Producing and developing sustainable and delicious products – that is what we do. Ojah is a fast growing company with a mission and has the ambition to be the world leader in its field. To support this growth we are hiring new colleagues. People that would like to make a difference and dare to dream big. With currently a 150 colleagues proudly working on our exceptional products. Working in a dynamic surrounding that runs full speed ahead. We need you! Product Developer

Bekijk vacature »

.Net Ontwikkelaar

Dit ga je doen Het ontwerpen en ontwikkelen van software voor klanten; Het bijdragen van kennis en ervaring; Het integreren van van de software en afstemmen met klanten; Het functioneel testen van de ontwikkelde software. Hier ga je werken Voor onze relatie zijn wij momenteel op zoek naar een .Net Developer die wilt werken aan software die draait op machines wereldwijd. De organisatie produceert software voor applicaties die gebruikt worden in verschillende branches. De software wordt geleverd aan fabrikanten van verschillende robotica en machines. Als .Net ontwikkelaar ben je intern onderdeel van het team wat de applicatie omgevingen ontwikkeld en

Bekijk vacature »

PHP Developer (junior functie)

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed

Bekijk vacature »

Leidinggevend Full Stack Developer

Hé jij, nieuwe Pinkcuber! Ga aan de slag bij Pinkcube, online leverancier van promotieartikelen! Een innovatieve organisatie waar extra stappen zetten voor klanten de normaalste zaak van de wereld is. Ambitieus zijn we ook. ‘Naoberschap’ staat bij Pinkcube hoog in het vaandel; we helpen elkaar en iedereen is welkom. Pinkcube is Great Place to Work Certified, erkend leerbedrijf, maatschappelijk betrokken partner van stichting Present en partner van CliniClowns. En misschien wel jouw nieuwe werkgever. Wij zoeken namelijk een enthousiaste: Leidinggevend Full Stack Developer (40 uur, medior/senior) Ben jij klaar om baanbrekende ideeën tot leven te brengen en deel uit te

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Voor een opdrachtgever in omgeving Moordrecht zijn wij op zoek naar een programmeur. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op

Bekijk vacature »

.NET Developer

Functie omschrijving Jij gaat in de functie van Software Developer werken met C# en .NET framework. Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met back-end development. Verder staat dit

Bekijk vacature »

Pagina: « vorige 1 2

Ozzie PHP

Ozzie PHP

10/08/2016 03:02:22
Quote Anchor link
@Wouter J:

Duidelijk verhaal ... wat ook daadwerkelijk opgaat als dingen/elementen continu zouden veranderen. Echter ... volgens mij bouwen we een website naar een vaststaande structuur en weten we dus op voorhand wat waar staat.

Wil ik een speciale lijst toevoegen dan voeg ik een lijst met class "my_special_list" toe. Waarom moet ik dan alle <li>'s die daar inzitten ook weer een aparte class geven, terwijl ik die prima kan benaderen via het root-element <ul> met de class "my_special_list"?

Komen we weer even terug op het voorbeeld met het klaslokaal. Stel we hebben 1 klaslokaal met felle groene verlichting, en 1 klaslokaal met felle rode verlichting.

Ieder kind dat het rode lokaal binnenstapt wordt door de verlichting vanzelf roodgekleurd en is dus een "rood" kind. Ieder kind dat het groene lokaal binnenstapt wordt op diezelfde manier "groen" van kleur. We weten dus dat in het rode lokaal altijd rode kinderen zitten, en in het groene lokaal altijd groene kinderen. WAAROM zouden we dan bij de kinderen in het rode lokaal nog een extra bordje om hun nek hangen om aan te geven dat ze rood zijn? Nergens voor nodig, want omdat ze in het rode lokaal zitten, weten we dat al. Idem voor het groene lokaal.

Hoe achterlijk dit voorbeeld ook is (maar goed dat was het originele voorbeeld ook) geeft het wel exact aan wat ik bedoel te zeggen. Op basis van een overkoepelend element, kun je generieke elementen binnen het overkoepelend element prima stijlen. Het lijkt mij overkill om al die generieke elementen een bordje om hun nek te hangen / een class te geven.
Gewijzigd op 10/08/2016 03:14:38 door Ozzie PHP
 
PHP hulp

PHP hulp

26/05/2026 12:10:34
 
Ward van der Put
Moderator

Ward van der Put

10/08/2016 10:43:21
Quote Anchor link
Ozzie PHP op 10/08/2016 03:02:22:
Wil ik een speciale lijst toevoegen dan voeg ik een lijst met class "my_special_list" toe. Waarom moet ik dan alle <li>'s die daar inzitten ook weer een aparte class geven, terwijl ik die prima kan benaderen via het root-element <ul> met de class "my_special_list"?

Het verschil is dat jouw versie impliciet is met een verborgen opmaak die je alleen kunt terugvinden door in de CSS-code te zoeken. Ik moet bijvoorbeeld binnen de accolades gaan kijken hoe jij een kerstboom optuigt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
ul.kerstboom {
  ...
}

ul.kerstboom li {
  ...
  ...
  /* Dit moet ik allemaal lezen om te achterhalen wat je doet en laat. */
  ...
  ...
}

Aangezien jij HTML-elementen rechtstreeks opmaakt, loop ik ook nog het risico dat je elders in de CSS-code bijvoorbeeld hebt verzonnen dat lijsten in een footer anders worden opgemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
footer ul {
  ...
}

BEM maakt keuzen expliciet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.kerstboom {
  ...
}

.kerstboom__kerstbal {
  ...
}

.kerstboom__piek {
  ...
}

.kerstboom__kerstbal--goudkleurig {
  ...
}

.kerstboom__kerstbal--zilverkleurig {
  ...
}

Ozzie PHP op 10/08/2016 03:02:22:
Duidelijk verhaal ... wat ook daadwerkelijk opgaat als dingen/elementen continu zouden veranderen. Echter ... volgens mij bouwen we een website naar een vaststaande structuur en weten we dus op voorhand wat waar staat.

Maar BEM is dan ook bedoeld voor templating. Kijk bijvoorbeeld maar eens naar de BEM-bouwstenen in Material Design Lite (MDL) van Google. Als een structuur op voorhand vastligt en later zelden of nooit ingrijpend verandert, is een objectgeoriënteerd, modulair template-systeem niet interessant. Áls ...
 
Ozzie PHP

Ozzie PHP

10/08/2016 12:13:23
Quote Anchor link
>> Maar BEM is dan ook bedoeld voor templating.

Dat is dus een situatie waarin het handig zou kunnen zijn.

>> Het verschil is dat jouw versie impliciet is met een verborgen opmaak die je alleen kunt terugvinden door in de CSS-code te zoeken. Ik moet bijvoorbeeld binnen de accolades gaan kijken hoe jij een kerstboom optuigt

Dat moet je in de BEM variant ook, met hooguit als verschil dat je daar direct naar het naampje kunt gaan van de class. Maar met bijv. Firebug zie je ook direct de opmaak van ieder element, dus voor mij persoonlijk is dit geen zwaarwegend argument. Ik vind het dan weer zonde van resources om generieke elementen pseudo-uniek te maken door ze hun eigen class te geven.

Maar goed, uiteindelijk is het een kwestie van wat je zelf makkelijk vindt. Ieder nadeel heb z'n voordeel ;)
 
Eddy E

Eddy E

10/08/2016 22:19:50
Quote Anchor link
Ozzie PHP op 08/08/2016 21:25:20:
Wat een vreemde manier om generieke elementen te voorzien van een class ... lijkt me overkill.


Helemaal mee eens.
Ik haak dan wel even halverwege in het topic aan, maar om elk element een class te geven, is toch niet nodig?
Je kan er toch (bijna) altijd bij zonder enige class dan ook?
Een class op <body> is geen gek idee en soms op <section> ook niet, maar dat doe je dan meestal via een id=...!

Wat is er mis met dit?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
body#contact nav ul li a:nth-child(1) { font-weight: bold; }


Toch duidelijk dat de eerste link van je menu op de contact-pagina vet wordt?

Toevoeging op 10/08/2016 22:29:58:

Als reactie op Ward z'n code van een kerstboom:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div class="kerstboom">
    <div>Piek</div>
    <div class="bal zilver">Zilveren bal</div>
    <div class="bal goud">Gouden bal</div>
    <div>Voet</div>
</div>


/* Kerstboom hier */
.kerstboom             {  }

.kerstboom div:first-child     { /* piek /* }
.kerstboom div:last-child     { width: 10%; background-color: brown; }

.kerstboom .bal         { border-radius: 100%; }

.kerstboom .zilver         { background-color: grey; }
.kerstboom .goud         { background-color: yellow; }


Zo houd je sematiek hoog, weet je alsnog alles te vinden en ben je veel flexibeler. Je kan ook een gouden stam hebben... Gewoon class=goud toevoegen...
Gewijzigd op 10/08/2016 22:30:47 door Eddy E
 
Wouter J

Wouter J

10/08/2016 22:31:36
Quote Anchor link
Quote:
Toch duidelijk dat de eerste link van je menu op de contact-pagina vet wordt?

Ironisch bedoelt? Zo ja, negeer de rest van t bericht maar. :)

<nav> is niet alleen je hoofdnav. Ook die serie linkjes in je footer is een nav. Sterker nog, die "< prev | next >" linkjes bij blogposts zijn ook nav. Dus nu wordt elk eerste li'tje in een nav (iedere willekeurige nav) bold.

Ja, je zal nu wel 1 <nav> hebben. Maar over 30 dagen voeg je toch nog een sidebar met een subnavje toe en het gedoe begint. Dan moet die weer font-weight:normal; krijgen, met eventueel andere stijlen die van andere CSS selectors zijn geinherit, etc.

Tevens is de selector veel te specifiek. Niet alleen kun je op deze manier de stijl nogmaals hergebruiken, ook zal deze selector relatief traag zijn. (CSS selectors worden altijd van rechts naar links gelezen).
 
Ozzie PHP

Ozzie PHP

10/08/2016 22:44:29
Quote Anchor link
body#contact nav ul li a:nth-child(1) { font-weight: bold; }

Body met een id is niet nodig, want er staat op iedere pagina maar 1 body.

Dan hou je dus over:

#contact nav ul li a:nth-child(1) { font-weight: bold; }

Die ul en li zijn uit m'n hoofd ook niet nodig, dus blijft over:

#contact nav a:nth-child(1) { font-weight: bold; }

nth-chilc(1) kan first-child worden en dan krijg je:

#contact nav a:first-child { font-weight: bold; }

>> Tevens is de selector veel te specifiek.

Nu dus niet meer ;-)
 
Wouter J

Wouter J

10/08/2016 22:55:40
Quote Anchor link
Quote:
Nu dus niet meer ;-)

Gelukkig weten jij en ik dat "Tevens" betekend dat er voor nog veel meer geschreven staat.

Overigens werk de hele selector niet zoals verwacht (zowel specifieke als de korte, welke idd identiek zijn), maar dat mag eenieder zelf uitvinden :)
 
Ozzie PHP

Ozzie PHP

11/08/2016 00:52:59
Quote Anchor link
>> Overigens werk de hele selector niet zoals verwacht

Haha ... zou zomaar kunnen ;-) Heb 'm ook niet getest.

Anyhow ... gebruik gewoon BEM als je dat fijn vindt. Ik gebruik het niet. Stijl dingen die algemeen zijn ook als zodanig, en wat specifiek noodzakelijk is, ook als zodanig. Dat is mijn werkwijze. Scheelt in ieder geval een hoop classes ;-)
 
Eddy E

Eddy E

11/08/2016 10:03:48
Quote Anchor link
Wouter J op 10/08/2016 22:31:36:
Ironisch bedoelt? Zo ja, negeer de rest van t bericht maar. :)


Beetje wel ja ;)
Desalniettemin is het zo benaderen van elementen, (hetzij een strakke hierachie nodig is) wel mogelijk.

In tegenstelling tot BEM, vond ik vanochtend dit: http://acss.io/
Maar hetzelfde als in mij ogen: veel te veel classes en code voor iets wat veel eenvoudiger met iets geavanceerdere CSS ook gewoon mogelijk is.
 
Ward van der Put
Moderator

Ward van der Put

11/08/2016 10:26:12
Quote Anchor link
Eddy E op 11/08/2016 10:03:48:
In tegenstelling tot BEM, vond ik vanochtend dit: http://acss.io/
Maar hetzelfde als in mij ogen: veel te veel classes en code voor iets wat veel eenvoudiger met iets geavanceerdere CSS ook gewoon mogelijk is.

Er zijn inderdaad meer template-talen die er, net zoals BEM, een eigen dialect van CSS op nahouden. Naast ACSS (Atomic CSS) zijn dat bijvoorbeeld SMACSS (Scalable and Modular Architecture for CSS) en OOCSS (Object Oriented CSS).

Het draait er niet om dat ze iets zouden doen dat in CSS onmogelijk is: ze gebruiken uiteindelijk immers allemaal CSS. Ik denk dat je ze meer moet zien als tussentaal die een logischer (of beter te hanteren) verband legt tussen DOM-elementen enerzijds en CSS-eigenschappen anderzijds.

Vooral het feit dat ze objectgeoriënteerd zijn, maakt ze aantrekkelijk als je ook al objectgeoriënteerd PHP gebruikt. Een BEM-block kun je zien als één klasse. Vergelijkbaar met methoden en properties in een PHP-klasse kan één zo'n CSS-klasse meerdere DOM-elementen en meerdere CSS-eigenschappen omvatten.
Gewijzigd op 11/08/2016 10:28:39 door Ward van der Put
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.