Separate the Front end from the backend :
Backend
to write a Dapp you need to write a contract which is commonly written in solidity (or Serpent).
Frontend
in the front end you could use the Css, HTML .. to build the interface, and Web3.js framwork to interact with the contract.
in order to run the dapp you need first to deploy the contract in the ethereum network (you could setup your private chain) and you need a browser to run you application like mist or there is a chrome extension(MetaMask) to browse Dapps.
here you will find a sample i have developed using solidity and web3.js
https://github.com/bellaj/Ballot-Dapp